2009-10-15 18 views
10

Mam gridview z pola szablonu. W tym polu szablonu znajduje się pole wyboru. Mam przycisk przesyłania poza gridview, aby przypisać sprawdzone rekordy. Na odświeżeniu strony nie zaznaczono pól wyboru rejestrów. Oto mój kod:Pole wyboru w TemplateField w Gridview traci sprawdzone na oddzwonienie

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

Mam ustawiony punkt przerwania na ciąg ID = lblID.Tekst; ale nigdy nie znajdzie żadnych, które są sprawdzane.

+0

używam C#, ale ten przykład ze strony internetowej asp.net w VB.NET jest w zasadzie robi dokładnie to, co robię: http: // www .asp.net/Learn/data-access/tutorial-52-vb.aspx Wiem, że to możliwe, po prostu nie wiem, dlaczego to nie działa dla mnie. – Jhorra

+1

Kiedy cykl życia stron to twoja metoda przypisania do wywołania? –

+0

Sprawdź Rozwiązanie tutaj, musisz zachować zaznaczenie pola wyboru http://highoncoding.com/Articles/697_Persisting_CheckBox_State_While_Paging_in_GridView_Control.aspx – user2323258

Odpowiedz

14

myślę, czego brakuje, po kliknięciu na przycisk i strona jest odświeżenie strony, to ponownego wiązania do GridView, trzeba związać w takim stanie jak

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

Masz rację, właśnie kładę przerwę w metodzie wyszukiwania i jest ona wywoływana ponownie. Będę musiał wyśledzić, skąd jest wywoływany. – Jhorra

1

Na odświeżenie strony, zawartość GridView są ponownie tworzone z odświeżonych danych Viewstate pomiędzy page_init i page_load. Być może spróbuj zbadać twój Gridview w page_load, aby zobaczyć, co tam jest.

0

ustawić atrybut autopostback z Checkbox

AutoPostBack="true" 
Powiązane problemy