2014-10-31 4 views
0

У меня есть столбец флажка внутри сетки и одна кнопка и один элемент управления мастера на странице .. Мне нужно установить флажок в флажке в событие нажатия кнопки, как это .... Если какой-либо из флажков не проверяется, мне нужно, чтобы предотвратить, чтобы загрузить шаг мастера 2 .... Но я не в состоянии сделать этоcheckbox валидация внутри gridview при нажатии кнопки

Я добавляю все проверил строки на другую GridView, что я была установка в wizardStep: 1

и это мой код ...

protected void Update_Onclick(object sender, EventArgs args) 
{ 
    DataTable dt = null; 
    CheckBox chk; 
    foreach(GridViewRow gvrow in gvPR.Rows) 
    { 
     //chk = (CheckBox)(gvPR.Rows[i].Cells[0].FindControl("chkFru")); 
     chk = (CheckBox)gvrow.FindControl("chkFru"); 
     if (chk.Checked == true) 
     { 
      dt = objCert.BuildCertInfo(); 
      DataRow dr = dt.NewRow(); 
      // HtmlInputHidden hdn = (HtmlInputHidden)(gvPR.Rows[i].Cells[0].FindControl("hdnFruId")); 
      HtmlInputHidden hdn = (HtmlInputHidden)gvrow.FindControl("hdnFruId"); 
      string strFru = hdn.Value; 
      dr[Certificate.SYS_SERIAL_NUMBER] = strFru; 

      //get Fru info 

      dsInfo = objCert.GetFruInfo(strFru); 
      if (dsInfo == null) 
      { 
       setError(lblCertErr, Certificate.NO_SYS_INFO); 
       return; 
      } 
      dr[Certificate.SYS_PART_ID] = dsInfo.Tables[0].Rows[0]["part_id"].ToString(); 
      dr[Certificate.SYS_PART_DESC] = dsInfo.Tables[0].Rows[0]["Part_desc"].ToString(); 
      dr[Certificate.SYS_SERIAL_NUMBER] = dsInfo.Tables[0].Rows[0]["Serial_Number"].ToString(); 
      dr[Certificate.LOC] = dsInfo.Tables[0].Rows[0]["Location"].ToString(); 
      dt.Rows.Add(dr); 

     } 

    } 
    LoadWizStep2(dt); 
} 

и метод LoadWizStep2 (DT)

private void LoadWizStep2(DataTable dt) 
{ 
    try 
    { 
     wizController.ActiveStepIndex = 1; 
     GridView2.DataSource = dt; 
     GridView2.DataBind(); 
     Session["FRU_INFO"] = dt; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 

} 

и это код страницы ASPX

<table width="100%" cellpadding="0" cellspacing="0" style="background-color: White"> 
       <tr style="width: 100%"> 
        <td colspan="2" align="left"> 
         <asp:GridView ID="gvPR" runat="server" AutoGenerateColumns="False" GridLines="None" 
          CellSpacing="1" CellPadding="1" 
          Width="100%" BorderWidth="0px" 
          AllowSorting="True" 
          PageSize="30" 
          CssClass="data responsive" 
          OnSorting="gvPR_Sort" OnRowDataBound="ItemCellsUpdate" 
          EmptyDataText="No Certificates found" SortedAscendingHeaderStyle-CssClass="tableHeaderLink"> 
          <Columns> 
           <asp:TemplateField> 
            <HeaderTemplate> 
             <asp:CheckBox ID="chkCerts" OnCheckedChanged="chkCerts_CheckedChanged" 
                AutoPostBack="true" runat="server" /> 
            </HeaderTemplate> 
            <ItemTemplate> 
             <asp:CheckBox ID="chkFru" OnCheckedChanged="chkFru_CheckedChanged" AutoPostBack="true" runat="server" /><input type="hidden" id="hdnFruId" runat="server" 
              value='<%# DataBinder.Eval(Container.DataItem, "Fru") %>' /> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:BoundField DataField="Fru" HeaderText="System Serial Number" SortExpression="Fru" /> 
           <asp:BoundField DataField="SystemPartId" HeaderText="System Part Number" SortExpression="SystemPartId" /> 
           <asp:BoundField DataField="SystemDesc" HeaderText="System Description" SortExpression="SystemDesc" /> 
           <asp:BoundField DataField="Location" HeaderText="System Location" SortExpression="Location" /> 
          </Columns> 
          <HeaderStyle Height="30px" HorizontalAlign="Center" /> 
          <PagerSettings Visible="False" /> 
         </asp:GridView> 
        </td> 
       </tr> 
      </table> 

Если флажок не установлен, мне нужно остановить, чтобы перейти на следующую страницу .. как я могу я это исправить ....

бы любой пожалуйста, предложить идеи по этому

+0

почему вы всегда вызова LoadWizStep2 (DT); почему вы не можете добавить условие с помощью флага, чтобы проверить, отмечен ли какой-либо из этих флажков? –

ответ

0

добавить счетчик и увеличить его в

int count=0 
If(chk.checked) 
{ 
count++ 
} 

and 

if(count>0) 
{ 
//load step 2 
} 
0

Вы оштрафуют здесь более простой код

int count=0; 
      //ImageButton lbtn = (ImageButton)sender; 
      DoctorDAO objDoctorDAO = new DoctorDAO(); 
      foreach (GridViewRow row in grd_Data.Rows) 
      { 
       CheckBox chk = (CheckBox)grd_Data.Rows[row.RowIndex].FindControl("Chklist"); 
       if (chk.Checked == true) 
       { 

        count++; 

       } 
      } 
      if (count > 0) 
      { 
       foreach (GridViewRow row in grd_Data.Rows) 
       { 
        CheckBox chk = (CheckBox)grd_Data.Rows[row.RowIndex].FindControl("Chklist"); 
        if (chk.Checked == true) 
        { 
         ImageButton lbtn = (ImageButton)grd_Data.Rows[row.RowIndex].FindControl("btn_Delete"); 

         objDoctorDAO.deleteDoctor(Convert.ToInt32(lbtn.CommandArgument)); 
         lbl_Msg.Text = " Doctor Deleted Successfully!!"; 
        } 
       } 
      } 
      else 
      { 
       lbl_msg3.Text = "Please Check at least one record to Delete"; 
       return; 
      } 
Смежные вопросы