1

データリスト内にチェックボックスリストがあります:

     <asp:DataList ID="dtlstfilter" runat="server">
      <ItemTemplate>
      <div style="display: none;" id='<%#changes(Eval("FilterCode")) %>' class="p7ABcontent">
       <p>
        <asp:CheckBoxList AutoPostBack="true" Font-Size="12px" ID="chklist" runat="server" ></asp:CheckBoxList>
        </p>
        </div>
       </ItemTemplate>
       </asp:DataList>

そして、これに「はい」と「いいえ」と言う 2 つのリスト項目をロードしました。選択したチェックボックスでイベントを取得するにはどうすればよいですか?

4

2 に答える 2

4

SelectedIndexChanged イベントをバインドし、引数を渡して現在の rowNumber またはカスタム属性 (ユーザー定義属性) を使用して必要なものを取得する必要があります。

htmlで

<asp:DataList ID="dtlstfilter" runat="server"  >
    <ItemTemplate>
      <div style="display: none;" id='<%#changes(Eval("FilterCode")) %>' class="p7ABcontent">
         <p>
             <asp:CheckBoxList AutoPostBack="true" Font-Size="12px" ID="chklist" runat="server"  onselectedindexchanged="chklist_SelectedIndexChanged"   CommandName="myCommand" CommandArguments="1" DataListRowNumber="1" ></asp:CheckBoxList>
        </p>
     </div>
    </ItemTemplate>
</asp:DataList>

コードビハインドで

protected void chklist_SelectedIndexChanged(object sender, EventArgs e)
{
    CheckBoxList chklst = (CheckBoxList)sender;
    string commandName = chklst.Attributes["CommandName"].ToString();
    string commandArguments = chklst.Attributes["commandArguments"].ToString();
    string dataListRowNumber = chklst.Attributes["DataListRowNumber"].ToString();
}
于 2012-10-16T16:09:26.007 に答える
1

別の方法、考えてみてください。このソリューションは、クライアントとサーバー間のラウンドトリップを最小限に抑えます。

ボタンのクリック イベントを使用します。DataListItems を反復処理し、FindControl メソッドを使用して CheckBoxList を見つけることができます。これで、どの要素がチェックされているかを判断できます。

foreach (DataListItem item in dtlstfilter.Items)
{
  if (item.ItemType == ListItemType.Item)
  {
    CheckBoxList checkBox = item.FindControl("chklist") as CheckBoxList;
  }
}
于 2012-10-17T06:20:26.927 に答える