2013-01-11 104 views
2

我有一些記錄Gridview(1記錄= 1行)。如何根據asp.net GridView中點擊的按鈕來獲取行索引?

在每一行上我都添加了一個按鈕來從我的mysql數據庫中刪除這條記錄。

每行都有相同的按鈕。

問題是我需要知道在哪一行按鈕被點擊?我需要這個得到一個行索引來獲得我在那一行的記錄的ID。

我怎樣才能以最簡單的方式做到這一點?

的GridView:

 <asp:GridView ID="GridView1" runat="server" 
     CellPadding="6" EnableModelValidation="True" ForeColor="#333333" 
     GridLines="None" Caption="TWOJE WIZYTY" Font-Bold="True" 
     onrowcreated="GridView1_RowCreated" style="text-align: left"> 
     <AlternatingRowStyle BackColor="#AEAEAE" /> 
     <EditRowStyle BackColor="Blue" /> 
     <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#868686" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="Blue" ForeColor="#333333" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#C7C7C7" ForeColor="#333333" /> 
     <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
    </asp:GridView> 

按鈕被添加這樣的:

 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
     Button b1 = new Button(); 
     b1.Text = "usuń"; 
     b1.OnClientClick = "return potwierdzenie()"; 
     b1.Click+=new EventHandler(b1_Click); 
     TableCell cel = new TableCell(); 
     cel.Width = Unit.Pixel(180); 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
      e.Row.Cells[0].Visible = false; 
      e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right; 
      e.Row.Cells[2].Text = ""; 
      e.Row.Cells.Add(cel); 
     } 
     else 
     { 
      //HERE IS MY BUTTON ADDED! ********************* 
      cel.Controls.Add(b1); 
      cel.HorizontalAlign = HorizontalAlign.Right; 
      e.Row.Cells[0].Visible = false; 
      e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right; 
      e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Left; 
      e.Row.Cells.Add(cel); 
     } 
    } 
+0

您可以使用您用於GridView的標記更新問題嗎?根據您聲明按鈕的方式,解決方案可能會有所不同。 – Icarus

+0

記錄的ID在哪裏?你使用C#還是VB.NET? –

+0

看看[這個問題]的第一個答案(http://stackoverflow.com/questions/10795325/datagridview-selection-changed-event-and-deleting-selected-rows-from-database)得到一個想法 - 希望有所幫助。 – Chaithanya

回答

4

您可以用按鈕的NamingContainer屬性來獲取GridViewRow。然後,您只需找到其他控件即可(如果使用TemplateFields,則可使用帶ID的控件)。

protected void button_Delete_click(Object sender, EventArgs e) 
{ 
    Button btn = (Button) sender; 
    GridViewRow row = (GridViewRow) btn.NamingContainer; 
    // assuming you store the ID in a Hiddenield: 
    Hiddenield hiddenID = (HiddenField) row.FindControl("HiddenID"); 
    int ID = int.Parse(hiddenID.Value); 
    // delete the record 
} 

您也可以通過row.RowIndexrow-index

+0

好主意!非常感謝! –

+0

@PawełAdamczyk:由於您現在編輯了您的問題,並且顯示您未使用模板字段,因此您無法使用「FindControl」。但是如果有幫助,你可以使用'row.RowIndex'來獲得索引(編輯我的答案)。 –

相關問題