2009-10-15 29 views
10

Tôi có một GridView với một trường mẫu. Trong trường mẫu đó là một hộp kiểm. Tôi có một nút gửi bên ngoài GridView để gán các bản ghi đã được kiểm tra. Trên postback không có hộp kiểm đăng ký như đang được kiểm tra. Đây là mã của tôi:Hộp kiểm trong TemplateField trong Gridview mất kiểm tra trên postback

<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 
     } 
    } 
} 

Tôi có điểm ngắt được đặt trên chuỗi ID = lblID.Text; nhưng nó không bao giờ tìm thấy bất kỳ được kiểm tra.

+0

Tôi đang sử dụng C#, nhưng ví dụ này từ trang web asp.net trong VB.Net về cơ bản là làm chính xác những gì tôi đang làm: http: // www .asp.net/Tìm hiểu/truy cập dữ liệu/hướng dẫn-52-vb.aspx Vì vậy, tôi biết điều đó là có thể, tôi không biết tại sao nó không hoạt động đối với tôi. – Jhorra

+1

Khi nào vòng đời trang là phương pháp của bạn để chỉ định được gọi? –

+0

Kiểm tra giải pháp tại đây, bạn cần phải chọn hộp kiểm chọn http://highoncoding.com/Articles/697_Persisting_CheckBox_State_While_Paging_in_GridView_Control.aspx – user2323258

Trả lời

14

Tôi nghĩ rằng những gì bạn đang thiếu được, khi bạn nhấn vào nút và trang của bạn là postback, bạn rebinding để GridView, bạn cần phải ràng buộc trong tình trạng này như

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

Bạn nói đúng, tôi chỉ cần đặt điểm ngắt trên phương thức tìm kiếm và nó đang được gọi lại. Tôi sẽ phải theo dõi nơi nó được gọi. – Jhorra

1

Trên một postback, nội dung của GridView được tái tạo từ dữ liệu Viewstate postback giữa page_init và page_load. Có lẽ thử kiểm tra GridView của bạn trong page_load để xem có gì ở đó.

0

thiết lập các thuộc tính AutoPostBack của Checkbox

AutoPostBack="true" 
Các vấn đề liên quan