0

いくつかのデータを表示するグリッドビューがあり、チェックボックス列が追加されているため、選択したアイテムを削除できます。私のグリッドビューは次のようにレイアウトされています:

<div class = "my_gv">
            <asp:UpdatePanel ID = "update_panel" UpdateMode = "Conditional" runat = "server">
            <ContentTemplate>
                <asp:GridView ID="my_gv" runat="server" AutoGenerateColumns = "False" 
                    GridLines="None" Width="100%" AllowSorting="True" 
                    CssClass="table table-bordered x-condensed cameraDetails" OnRowDataBound = "my_gv_RowDataBound">
                    <Columns>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <asp:CheckBox ID="SelectAll_ChckBx" runat="server" onclick="selectAllCheckBoxes(this);" meta:resourceKey="SelectAll_ChckBxResource1" />
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="row_select_checkbox" runat="server" meta:resourceKey="row_select_checkbox_resource" />
                            </ItemTemplate>
                            <HeaderStyle CssClass="CAMheader" />
                            <ItemStyle CssClass="itemEntry chkBx" Width="25px" />
                        </asp:TemplateField>
                        // snip

削除を処理する私のロジックは次のことを行います。

            foreach (GridViewRow row in my_gv.Rows)
            {
                if (row.RowType != DataControlRowType.DataRow)
                {
                    continue;
                }
                var chkBox = row.FindControl("row_select_checkbox");

                if (chkBox.Checked)
                { 
                    // snip
                }

これは私には理にかなっているように思えますが、チェックボックスの実際の状態に関係なく、.Checked メソッドは常に false を返します。グリッドビューから他の (テキスト) 列に問題なくアクセスできます。

それで、私は何を間違っていますか?チェックボックスの状態を正確に取得するにはどうすればよいですか? 助けてくれてありがとう

4

1 に答える 1

0

データのリストを取得してグリッドにバインドし、実際に DataBind を呼び出す BindGrid メソッドを作成することをお勧めします。このメソッドは、必要に応じて List を受け入れることができ、メソッドは GridView にバインドするだけです。次に、page_load で次のことを行うことができます。

if(!Page.IsPostBack)
{
    BindGrid();
}

これにより、グリッドを更新する必要がある場合 (つまり、グリッドのページングまたはソート) にバインディング ロジックを再度呼び出す柔軟性が得られます。

于 2013-06-21T19:10:12.300 に答える