2013-08-06 87 views
0

Gridview imagebutton onclick和OnCommand事件未被触发。Gridview ImageButton OnCommand事件未被触发

<form id="form1" runat="server"> 

     <div class="heading"> 
      <div class="Search"> 
       <customContorls:Header ID="Header1" runat="server" /> 
      </div> 
      <div class="MenuItems"> 
       <customContorls:MenuItems ID="MenuItems1" runat="server" /> 
      </div> 
     </div> 

     <div class="content-wrapper"> 
      <div style="margin-left: 50px"> 
       <asp:GridView ID="grdResult" runat="server" OnRowCommand="grdResult_RowCommand" AllowPaging="true" EmptyDataText="No Video Found" 
        AlternatingRowStyle-HorizontalAlign="Center" GridLines="None" DataSourceID="objSource" 
        AutoGenerateColumns="False"> 
        <Columns> 
         <asp:TemplateField> 
          <ItemTemplate> 
           <asp:ImageButton ImageUrl='<%# Eval("Thumbnail") %>' runat="server" Width="200" Height="150" 
           ID="imgThumbnail" CommandName="ABC" CommandArgument="123"/> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="VideoName" SortExpression="VideoName"></asp:BoundField> 
        </Columns> 
       </asp:GridView> 

       <asp:ObjectDataSource ID="objSource" runat="server" 
        TypeName="PagingSource" SortParameterName="sortExpression" 
        OldValuesParameterFormatString="original_{0}" EnablePaging="True" 
        SelectMethod="GetVideoDataBy" SelectCountMethod="TotalNumberOfRecords"></asp:ObjectDataSource> 
      </div> 
     </div> 
    </form> 

这是我使用的,因为数据源分页的ObjectDataSource控件的完整标记代码/真寻呼

这里是C#代码

protected void Page_Load(object sender, EventArgs e) 
    { 
     Title = "Search Result"; 
     string SortExp = ""; 
     if (!IsPostBack) 
     { 
      if (Page.RouteData.Values["videoname"] != null) 
       SortExp = Page.RouteData.Values["videoname"].ToString(); 

      grdResult.Sort(SortExp, SortDirection.Ascending); 
      grdResult.PageSize = 5; 
     } 
    } 

protected void grdResult_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if(e.CommandName == "ABC") 
    { 
    Response.Redirect("~/video.aspx", false); 
    } 
} 

我也试过OnRowCommand事件,但它也是不被解雇。

+0

如果你有OnRowCommand,那么它应该被触发。你看到的行为是什么?如果(e.CommandName ==“ABC”) { Response.Redirect(“〜/ video.aspx”,false);如果(e.CommandName ==“ABC”) –

+0

protected void grdResult_RowCommand(object sender,GridViewCommandEventArgs e) } } This OnRowCommand function is not working too –

+0

在代码隐藏的RowCommand方法的'if'语句中放置一个断点,并检查'e.CommandName'的值。 –

回答

0

如果你想做一些(即Response.Redirect("~/video.aspx", false);当图像按钮被点击,你可以做这样的事情:

1 - 首先对图像按钮控件添加OnClick事件(例如DoSomething

2 - 那么你DoSomething事件处理会是这样的(VB.Net

Protected Sub DoSomething(ByVal sender As Object, ByVal e As EventArgs) 
    Dim row As GridViewRow = sender.NamingContainer --get the row that triggered it 
    ...then do something 
    End Sub 
+0

我不知道如何在'asp:ImageButton'标签中添加'OnClientClick ='imgClick('<%='VideoName'%>')''时触发'grdResult_RowCommand'函数 –