2013-08-06 88 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'函數 –