1

データベースから取得したデータを表示する GridView があります。このコードを使用して、GridView に TemplateField (CheckBox) を作成しました。

<asp:GridView ID="dbRecordsContent" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="dbRecordsContent_SelectedIndexChanged">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="myCheckBox" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />
        <asp:BoundField DataField="url" HeaderText="url" SortExpression="url" />
        <asp:BoundField DataField="category" HeaderText="category" SortExpression="category" />
        <asp:BoundField DataField="isChecked" HeaderText="isChecked" SortExpression="isChecked" />
    </Columns>
</asp:GridView>

私のグリッドビューは次のようになります。

ここに画像の説明を入力

私の質問は: どのチェックボックス ID がチェックされているかを知るにはどうすればよいですか? 例えば:

「削除」ボタンを押したときに2行目を削除したい。もちろん、2 番目のチェックボックスをオンにしますが、どのレコードを削除するかをどのように判断すればよいでしょうか? コードで2番目のチェックボックスを参照するには?

4

2 に答える 2

2

削除ボタンのクリック イベント ハンドラーでは、グリッド内のすべての行をループする必要があり、チェック ボックスがオンになっている場合は、次のように削除ロジックを実行する必要があります。

protected void DeleteButton_Click(object sender, EventArgs e)
{
    foreach(GridViewRow row in dbRecordsContent.Rows)
    {
        // Only look for check boxes in data rows, ignoring header 
        // and footer rows
        if (row.RowType == DataControlRowType.DataRow)
        {
            if (((CheckBox)row.FindControl("myCheckBox")).Checked)
            {
                // Do delete logic here
            }
        }
    }
}

アップデート:

行番号を取得するには、次のGridViewRow.RowIndexようにプロパティを使用します。

int rowNumber = row.RowIndex;

詳細については、 GridViewRow.RowIndex プロパティを参照してください。

于 2013-09-27T12:28:08.097 に答える