2017-05-08 8 views
1

ich diese Vorlage FeldErste gridview Boxen geprüft

 <asp:TemplateField ItemStyle-Width="40px"> 
        <HeaderTemplate> 
         <asp:CheckBox ID="chkboxSelectAll" runat="server" AutoPostBack="true" OnCheckedChanged="chkboxSelectAll_CheckedChanged" /> 
        </HeaderTemplate> 
        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" /> 
        <ItemTemplate> 
         <asp:CheckBox ID="chkEmp" runat="server"></asp:CheckBox> 
        </ItemTemplate> 
       </asp:TemplateField>  
     <asp:TemplateField ShowHeader="False"> 

Im haben Code-behind habe ich diesen Code:

 protected void chkboxSelectAll_CheckedChanged(object sender, EventArgs e) 
     { 
      CheckBox ChkBoxHeader = (CheckBox)grdGeral.HeaderRow.FindControl("chkboxSelectAll"); 
      foreach (GridViewRow row in grdGeral.Rows) 
      { 
       CheckBox ChkBoxRows = (CheckBox)row.FindControl("chkEmp"); 
       if (ChkBoxHeader.Checked == true) 
       { 
        ChkBoxRows.Checked = true; 
       } 
       else 
       { 
        ChkBoxRows.Checked = false; 
       } 
      } 

     } 

    protected void btnLista_Click(object sender, EventArgs e) 
    { 
     string strEmailTotal = ""; 
     string strEmail = ""; 


     foreach (GridViewRow row in grdGeral.Rows) 
     { 
       CheckBox chkBx = (CheckBox)grdGeral.FindControl("chkEmp"); 
       if (chkBx != null) 
       { 
        if (chkBx.Checked) 
        { 
        strEmail = ((Label)grdGeral.FindControl("lblEmail")).Text; 
        strEmailTotal = strEmailTotal + "," + strEmail; 
       } 
       } 
     } 

     lblMail.Text = strEmailTotal ; 
    } 

ich immer einen Nullwert für das Kontrollkästchen, auch wenn ich gesetzt Der Standardwert ist "true" im Template-Feld. Kann mir jemand dabei helfen? Danke

+0

Können Sie die Markup _grdGeral_ zeigen? – Steve

+2

Sieht aus wie 'grdGeral.FindControl' eigentlich' row.FindControl' sein sollte. – Andrei

+0

Andrei Ich habe deinen Rat versucht und es funktioniert. Vielen Dank –

Antwort

1

versuchen Sie diese Lösung.

foreach (GridViewRow row in grdGeral.Rows) 
{ 
CheckBox chkBx = row.FindControl("chkEmp") as CheckBox ; 
} 
2

In Ihrem btnLista_Click Fall sollten Sie row statt grdGeral verwenden:
CheckBox chkBx = (CheckBox)row.FindControl("chkEmp");
und darunter die gleiche:

strEmail = ((Label)row.FindControl("lblEmail")).Text;