4

ポストバックを実行する場合を除いて、ロードしてすべてを正しく実行しているように見える CheckboxList がありますが、Item.Selectedプロパティが設定されていません。ページ全体でビューステートを無効にしています。

私はそれを次のようにロードします(Page_Loadロードごとに内部):

foreach (DataRow service in d.Tables[0].Rows)
{
  cblServices.Items.Add(new ListItem((string)service["description"], service["id"].ToString()));
}

私のマークアップは単純です:

<asp:CheckBoxList runat="server" ID="cblServices" Width="300px"></asp:CheckBoxList>

そして、私は基本的にこのようなものを使用します(ボタンの_Clickサーバーサイドイベントで)

foreach(ListItem item in cblServices.Items){
  if(item.Selected){
    MyLabel.Text+="selected: "+item.Value+item.Text;
  }
}

MyLabel にはテキストが追加されることはありません。デバッガーで _Click の foreach ループに到達することを確認できますが、項目が選択されていません。これの原因は何ですか?

4

1 に答える 1

3

Page.IsPostback = falseポストバック時にクライアントの選択をリセットするときだけでなく、すべての Page_Load 呼び出しでそれを入力している場合。

編集 PreInit または Init イベントにアイテムを追加する必要があります。そうすれば、選択したアイテムを正しく保持できます。

protected void Page_Init(object sender, EventArgs e)
{
    foreach (DataRow service in d.Tables[0].Rows)
    ...
}
于 2010-04-27T20:23:50.720 に答える