0

このコードを使用して、内部にチェックボックスを含むグリッドビューを作成しました。

<asp:GridView ID="GridView1" runat="server" Width="366px" autogeneratecolumn="false">
        <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:CheckBox ID="SelectAllCheckBox" runat="server" AutoPostBack="true" oncheckedchanged="SelectAllCheckBox_OnCheckedChanged" />
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID="EachCheckBox" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

チェックを入れたり外したりしてみました。 ここにリンクの説明を入力

protected void SelectAllCheckBox_OnCheckedChanged(object sender, EventArgs e)
    {
        String test = "test";
        test = "newtest";
        GridView1.DataSource = null;
        GridView1.DataBind();
    }

しかし、それはイベントをトリガーしません。 ここにリンクの説明を入力

コードが見つからず、これまで検索した場所を見つけようとしていますが、まだ見つかりません。

ご協力ありがとうございました!

4

2 に答える 2

0

コードはうまく見え、私にとってはうまくいきます。

ポストバックごとに GridView をバインドしている可能性があります。

イベントが添付された CheckBox をクリックすると、ページが更新されます。Page_Load (またはサーバーへのすべてのトリップで発生する任意のメソッド) で CheckBox をバインドすると、CheckBox をクリックするたびにグリッドがバインドされます。この場合、イベントを発生させるまでには至りません。

その場合は、GridView をバインドする前にポストバックを確認してください。

例えば:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Gridview1.DataSource = myDataSource;
        GridView1.DataBind();
    }
}
于 2012-07-27T19:43:58.903 に答える
0

OnItemCreated または OnItemDataBound を使用し、チェックボックスをデリゲートにリンクする必要があります

   void Item_Created(Object sender, DataGridItemEventArgs e) 
   {

      CheckBox cbx = (CheckBox)e.Item.FindControl("SelectAllCheckBox");
      cbx.CheckedChanged += SelectAllCheckBox_OnCheckedChanged;

   }
于 2012-07-27T15:13:22.063 に答える