2009-10-15 19 views
10

私はテンプレートフィールドを持つgridviewを持っています。そのテンプレートフィールドにはチェックボックスがあります。私はチェックされたレコードを割り当てるために、グリッドビューの外に送信ボタンを持っています。ポストバックでは、チェックボックスはチェックされていません。ここに私のコードです:GridviewのTemplateFieldのチェックボックスがポストバック時に無効になる

<Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:CheckBox ID="cb" Checked="false" runat="server" /> 
         <asp:Label ID="lblCFID" runat="server" Visible="false" Text='<%# Eval("ID") %>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" DataField="Name" HeaderText="Name" /> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" DataField="DOB" HeaderText="Date of Birth" /> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Gender" DataField="Gender" /> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Status" DataField="Status" /> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Plan Name" DataField="PlanName" /> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Type" DataField="ControlType" /> 
       <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Date of Service" dataformatstring="{0:MMMM d, yyyy}" htmlencode="false" DataField="DateofService" /> 
      </Columns> 

protected void AssignRecords(object sender, EventArgs e) 
{ 
    int Rows = gvASH.Rows.Count; 
    for (int i = 0; i < Rows; i++) 
    { 
     //CheckBoxField cb = ((CheckBoxField)gvASH.Rows[i].Cells[1]).; 
     CheckBox cb = (CheckBox)gvASH.Rows[i].Cells[0].FindControl("cb"); 
     Label lblID = (Label)gvASH.Rows[i].Cells[0].FindControl("lblCFID"); 
     if (cb.Checked == true) 
     { 

      string ID = lblID.Text; 
      //Assign Code 
     } 
    } 
} 

私はブレークポイントを文字列ID = lblID.Textに設定しました。チェックされたものは決して見つけられません。

+0

のAutoPostBackの属性を設定します.asp.net/Learn/data-access/tutorial-52-vb.aspx 私はそれが可能であることを知っています。なぜ私にとってうまくいかないのか分かりません。 – Jhorra

+1

ページのライフサイクルはいつ呼び出されるのかを割り当てる方法ですか? –

+0

解決策をここでチェックしてください。チェックボックスを選択したままにする必要があります。http://highoncoding.com/Articles/697_Persisting_CheckBox_State_While_Paging_in_GridView_Control.aspx – user2323258

答えて

14

は、私はあなたがボタンをクリックすると、あなたのページでは、GridViewコントロールに再バインド、ポストバックのとき何が不足していることは、あなたは、ポストバックで

if (!Page.IsPostBack) 
    { 
     GridView1.DataSourceID = "yourDatasourceID"; 
     GridView1.DataBind(); 
    } 
+0

あなたは正しいです。私は検索メソッドにブレークポイントを置き、再度呼び出されています。私はそれがどこから呼び出されているかを追跡する必要があります。 – Jhorra

1

のように、この状態で内容をバインドする必要があると思いますPostgreSQLのpage_initとpage_loadの間のポストバックViewstateデータから再作成されます。おそらく、そこにあるものを見るためにpage_loadのあなたのGridviewを調べてみてください。 HTTPを:// WWW

0

は、私はC#を使用していますが、VB.Netでasp.netのWebサイトから、この例では、基本的に私がやっている正確に何やっているチェックボックス

AutoPostBack="true" 
関連する問題