1

ボタンにアタッチされたイベントを作成して、グリッド ビューの各行を通過し、チェックされた値を true に変更しようとしました。このボタンをクリックすると、すべてが true とマークされるようにするにはどうすればよいですか?

これは私が始めたコードです:

foreach (GridViewRow row in GridView1.Rows)
{ 
    //I get stuck at this part
    row.Cells[9].FindControl("Overwrite")
}
4

3 に答える 3

2
foreach (GridViewRow row in GridView1.Rows)
{ 
    CheckBox b = row.Cells[9].FindControl("Overwrite") as CheckBox; 
    b.Checked = true;
}
于 2013-09-25T20:21:56.450 に答える
1

マークアップで、GridViewa を使用してコントロールTemplateFieldを保持する場合、次のように、実際にコントロールを見つけるためのCheckBoxより簡単なコードを記述できます。FindControlTextBox

<asp:GridView ID="GridView1" runat="server" Visible="False">
    <Columns>
        <asp:TemplateField HeaderText="Action Item">
            <ItemTemplate>
                <asp:CheckBox ID="Overwrite" runat="server"></asp:CheckBox>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

コード ビハインドで、次の操作を実行できます。

foreach (GridViewRow row in GridView1.Rows)
{
    // Only check data rows, ignoring header or footer rows
    if (row.RowType == DataControlRowType.DataRow)
    { 
        CheckBox b = row.FindControl("Overwrite") as CheckBox; 

        if(b != null)
        {
            b.Checked = true;
        }
    }
}

注:という名前のコントロールを探して行全体を検索できるCellsため、インデックスはもう必要ありません。FindControlOverwrite

于 2013-09-25T20:44:40.010 に答える