2012-06-05 111 views
1

我很難得到一個gridview的按鈕列做任何事情。我正在使用DirectoryInfo對象來獲取文件的詳細信息。我把文件名和日期創建到gridview列中。第三列是一個按鈕列。我已經設置了datakeys(Name,CreationTime),將按鈕列的commandName命名爲「sendcommand」。我想將文件名發送到另一頁。我有RowCommand事件的代碼:asp.net c#gridview按鈕

protected void gvFiles_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) 
{ 

    if (e.CommandName == "sendcommand") 
    { 

     int index = Convert.ToInt32(e.CommandArgument); 

     string fileID = ((GridView)sender).DataKeys[index]["Name"].ToString(); 
     Response.Redirect("[email protected]=" + fileID); 
    } 
} 

什麼都沒有發生,除了回發我想。我該怎麼做呢?

<asp:GridView ID="gvFiles" runat="server" Font-Name="Verdana" Font-Names="Verdana" 
     Width="401px" AutoGenerateColumns="False" BackColor="White" 
     BorderColor="Black" BorderStyle="Ridge" BorderWidth="2px" 
     DataKeyNames="Name,CreationTime" 
     > 
     <Columns> 
      <asp:HyperLinkField AccessibleHeaderText="File Name" 
       DataNavigateUrlFields="Name" DataNavigateUrlFormatString="~\Assets\reports\{0}" 
       DataTextField="Name" HeaderText="File Name" > 

       <HeaderStyle BackColor="#0033CC" ForeColor="White" /> 
      </asp:HyperLinkField> 
      <asp:BoundField AccessibleHeaderText="Date" DataField="CreationTime" 
       DataFormatString="{0:d}" HeaderText="Date"> 
       <HeaderStyle BackColor="Blue" ForeColor="White" /> 
      </asp:BoundField> 

      <asp:ButtonField ButtonType="Button" Text="DO Stuff" CommandName="sendcommand" 
       HeaderText="WHAT?!" /> 

     </Columns> 

     <AlternatingRowStyle BackColor="#6699FF" /> 

    </asp:GridView> 
+0

我們是否還可以看到gridview本身(生成它的aspx或c#)的設置? –

+0

你沒有說你將CommandArgument屬性設置爲任何東西?此外,gridview訂閱了這個事件,並且這個debuger是否在事件內部觸發了斷點? –

+2

你錯過了GridView的'OnRowCommand'屬性,所以gvFiles_RowCommand永遠不會被調用。 –

回答

3

你必須在OnRowCommand屬性添加到在ASPX你的GridView,否則在GridView不知道什麼時候,你就可以執行一個命令來調用什麼方法。這是一個完全可選的屬性,不是通過設計器生成的,所以當你想使用它時你必須手動添加它。