2

いくつかのレコード (1 レコード = 1 行) を含む Gridview があります。

すべての行に、このレコードを mysql db から削除するボタンを追加しました。

すべての行に同じボタンがあります。

問題は、ボタンがクリックされた行を知る必要があることです。その行にあるレコードのIDを取得するために行インデックスを取得するには、これが必要です。

これを最も簡単な方法で行うにはどうすればよいですか?

グリッドビュー:

        <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);
        }
    }
4

1 に答える 1

7

NamingContainerボタンのプロパティを使用して、 GridViewRow. これで、他のコントロールを見つけるために必要なものがすべて揃いました ( を使用する場合は、ID を持つコントロールを参照してくださいTemplateFields)。

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-indexviaも取得できますrow.RowIndex

于 2013-01-11T23:24:30.813 に答える