2010-06-16 3 views
2

Я довольно новичок в C# и asp.net, так что извиняюсь, если это действительно глупый вопрос.Кнопка просмотра сетки, передающая данные по щелчку

Я использую сетку для отображения ряда записей из базы данных.

В каждой строке есть кнопка «Редактировать». Когда нажимается кнопка, я хочу, чтобы идентификатор передавался обратно в функцию в моем файле .cs. Как связать rowID с полем Button?

Я устал от использования гиперссылки, но это, похоже, не работает, потому что я отправляю обратно на ту же страницу, у которой уже есть постоянный 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 и доступ ид таким образом:

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

Спасибо! Извините, я не уверен, что правильно объяснил этот вопрос. Это или я просто не совсем понимаю твой собеседник. ImplantID - это поле в базе данных. Поэтому я хочу вытащить его из базы данных (что я могу сделать), а затем присоединить его к Button, чтобы при запуске Onclick я знаю, какая запись должна быть отредактирована. – flyersun

Смежные вопросы