2012-01-09 16 views
1

アイテムのリストと真偽フラグを含むデータソースにバインドされたデータリストを含むフォームがあります。 trueの場合、myCheckのチェックボックスがチェックされますC#Checkbox.Checkedプロパティがチェックの変更を反映していない

<form id="myForm" runat="server"> 
    <asp:Button ID="save" runat="server" Text="Save" OnClick="save_Click" /> 
    <br /> 
    <asp:DataList runat="server" id="myList" onitemdatabound="myList_ItemDataBound"> 
    <HeaderTemplate> 
     <th>Item Name</th> 
     <th id="thCheck" runat="server">Check?</th> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <td id="tdName" runat="server"><%# Eval("Name") %></td> 
     <td runat="server"><asp:CheckBox id="myCheck" runat="server" Checked="false" /></td> 
    </ItemTemplate> 
</asp:DataList> 

保存クリックすると、私がチェックされた項目を見たいです。

protected void save_Click(Object sender, EventArgs e) 
{ 
    String Name; 
    Boolean omit; 

    foreach (DataListItem item in myList.Items) 
    { 
     CheckBox omitCheck = (CheckBox)item.FindControl("myCheck"); 

     if (omitCheck != null) 
     { 
      if (omitCheck.Checked == true) // This line is my problem!! 
      { 
       // do stuff 
      } 
      break; 
     } 
    } 

FindControlが正常に動作するように見えると私はボックスのいくつかをチェックした場合でも、しかし、値は常にfalseです、チェックボックスを返します。私は、データリスト内の項目を反復処理するために、次を使用しています。 aspxページでチェックボックスの値をTrueに設定すると、omitCheck.Checkedは常にtrueになります。 ViewStateは無効になっていません。

私はこれに新しいので、確かな答えがあることを確かめています。

+0

myList_ItemDataBound関数はどのように見えるのですか?私は、それが必要だと思う!IsPostbackは、ポストバックで入力された値をオーバーライドしないように – Evert

+0

それは、エヴァートありがとう。 myList.DataBind()メソッドの周囲に!IsPostBackチェックを追加すると、それが修正されました。 – RichardB

+0

私は答えとしてそれを置くでしょう、喜んでそれが助けました。 :) – Evert

答えて

5

myList_ItemDataBound関数の外観はどうなっていますか?私はそれが必要だと思う!IsPostbackは、ポストバックに入力された値をオーバーライドしないように