2010-06-16 92 views
2

我很新的C#和asp.net所以很抱歉,如果這是一個非常愚蠢的問題。網格視圖按鈕傳遞數據通過點擊

我正在使用網格視圖來顯示數據庫中的一些記錄。

每一行都有一個編輯按鈕。當按鈕被點擊時,我想要一個ID傳回給我的.cs文件中的一個函數。如何將rowID綁定到Button字段?

我已經厭倦了使用超級鏈接,但這似乎不工作,因爲我回發到已經有一個Permanter的URL相同的頁面。

asp.net

<asp:GridView ID="gvAddresses" runat="server" onrowcommand="Edit_Row"> 
    <Columns> 
     <asp:ButtonField runat="server" ButtonType="Button" Text="Edit"> 
    </Columns> 
</asp:GridView> 

C#

 int ImplantID = Convert.ToInt32(Request.QueryString["ImplantID"]); 
     Session.Add("ImplantID", ImplantID); 

     List<GetImplantDetails> DataObject = ImplantDetails(ImplantID); 

     System.Data.DataSet DSImplant = new DataSet(); 
     System.Data.DataTable DTImplant = new DataTable("Implant"); 

     DSImplant.Tables.Add(DTImplant); 

     DataColumn ColPostCode = new DataColumn(); 
     ColPostCode.ColumnName = "PostCode"; 
     ColPostCode.DataType = typeof(string); 
     DTImplant.Columns.Add(ColPostCode); 

     DataColumn ColConsigneeName = new DataColumn(); 
     ColConsigneeName.ColumnName = "Consignee Name"; 
     ColConsigneeName.DataType = typeof(string); 
     DTImplant.Columns.Add(ColConsigneeName); 

     DataColumn ColIsPrimaryAddress = new DataColumn(); 
     ColIsPrimaryAddress.ColumnName = "Primary"; 
     ColIsPrimaryAddress.DataType = typeof(int); 
     DTImplant.Columns.Add(ColIsPrimaryAddress); 

     DataColumn ColImplantCustomerDetailsID = new DataColumn(); 
     ColImplantCustomerDetailsID.ColumnName = "Implant ID"; 
     ColImplantCustomerDetailsID.DataType = typeof(int); 
     DTImplant.Columns.Add(ColImplantCustomerDetailsID); 

     foreach (GetImplantDetails Object in DataObject) 
     { 

      DataRow DRImplant = DTImplant.NewRow(); 
      DRImplant["PostCode"] = Object.GetPostCode(); 
      DRImplant["Consignee Name"] = Object.GetConsigneeName(); 
      DRImplant["Primary"] = Object.GetIsPrimaryAddress(); 
      DRImplant["Implant ID"] = Object.GeTImplantCustomerDetailsID(); 
      DTImplant.Rows.Add(DRImplant); <--- this is what I need to be added to the button 

     } 

     gvAddresses.DataSource = DTImplant; 
     gvAddresses.DataBind(); 

回答

2

在你Edit_Row方法,你可以訪問該行你的索引編輯,如:

int rowIndex = (int)e.CommandArgument; 

一旦你的你可以直接訪問該行並提取你想要的任何值:

GridViewRow row = gvTest.Rows[rowIndex]; 
int implantId = Int32.Parse(string row.Cells[3].Text); 

或者,您也可以將屬性DataKeyNames="Implant ID"添加到您的GridView和訪問的ID的方法:

int implantId = Int32.Parse(gvTest.DataKeys[rowIndex]["Implant ID"].ToString()); 
+0

謝謝! 對不起,我不確定我是否正確解釋了probelm。這或我只是不完全瞭解你的awnser。 ImplantID是數據庫中的一個字段。所以我想把它從數據庫中拉出來(我可以這樣做),然後將它附加到Button上,這樣當Onclick被觸發時,我知道哪個記錄需要被編輯。 – flyersun 2010-06-16 15:55:18

相關問題