2014-02-18 102 views
1

不知道是什麼原因導致這我試過幾個建議似乎沒有任何幫助。我已經調試了幾十次我的應用程序,並且在調試所有步驟時都沒有發生問題。但是,當我發佈我的應用程序並允許人們使用它時,問題發生時並不是每個人都隨機決定複選框未被選中,並且在前端也跳過了整個過程,所以我有一個驗證,要求至少一個複選框在button_click將會觸發前進行檢查,所以我知道他們必須檢查一個。循環gridview並不總是工作

的GridView

<div id="divEventDetail"> 
    <asp:GridView ID="grdEventDetail" runat="server" AutoGenerateColumns="False" DataKeyNames="EDID" Width="381px" OnRowDataBound="grdEventDetail_RowDataBound" GridLines="Horizontal"> 
    <Columns> 
    <asp:TemplateField HeaderText="EventID" Visible="False"> 
      <ItemTemplate> 
    <asp:Label ID="lblEventID" runat="server" Text='<%#  Eval("EDID") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Register" ItemStyle-CssClass="template-center"> 
      <ItemTemplate >       
       <asp:CheckBox ID="chkRegister" runat="server"/> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Wait List" ItemStyle-CssClass="template-center"> 
      <ItemTemplate> 
       <asp:CheckBox ID="chkWaitList" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 
    </div> 

代碼隱藏

protected void registerEvent() 
     { 
      foreach (GridViewRow row in grdEventDetail.Rows) 
      { 

       CheckBox chkR = row.FindControl("chkRegister") as CheckBox; 
       CheckBox chkW = row.FindControl("chkWaitList") as CheckBox; 

       if (chkR != null && chkW != null)// It is a datarow 
       { 

        GridViewRow Rowr = ((GridViewRow)chkR.Parent.Parent); 
        GridViewRow Roww = ((GridViewRow)chkW.Parent.Parent); 

        if ((chkR.Checked) || (chkW.Checked)) 
        // if ((((CheckBox)row.FindControl("chkRegister")).Checked == true) || (((CheckBox)row.FindControl("chkWaitList")).Checked == true)) 
        { 
         Label eventID = row.FindControl("lblEventID") as Label; 
***Then i do my database stuff here 
+1

我可以看看你的GridView的形象? 我想知道爲什麼代碼引用多行'Rowr'和'Roww'。 – Jumpei

+0

添加了我的gridview – Tim

+0

您可能正在運行跨瀏覽器問題。我會建議添加一些日誌記錄,並詢問您的客戶端使用哪個瀏覽器。 – ThiagoPXP

回答

4

我相信grdEventDetailGridView不必每一行中CheckBoxes。例如,HeaderRowFooterRow可能沒有這些CheckBoxes。

我將重寫代碼,以消除任何錯誤:

protected void registerEvent() 
{ 
    foreach (GridViewRow row in grdEventDetail.Rows) 
    { 
     CheckBox chkR = row.FindControl("chkRegister") as CheckBox; 
     CheckBox chkW = row.FindControl("chkWaitList") as CheckBox; 

     if(chkR != null && chkW != null)// It is a datarow 
     { 
      GridViewRow Rowr = ((GridViewRow)chkR.Parent.Parent); 
      GridViewRow Roww = ((GridViewRow)chkW.Parent.Parent); 

      if ((chkR.Checked) || (chkW.Checked)) 
      { 
       //Your code goes here 
      } 
     } 
    } 
} 
+0

我會試試看,並測試看結果謝謝 – Tim

+0

對不起afzalulh這並沒有結束工作我有10人註冊,其中2人破產,8人工作 – Tim

+0

'GridView'中的'lblEventID'在哪裏?我看不到它! – afzalulh