2009-02-12 14 views
6

Estoy usando casilla de verificación en gridview .... Lo estoy usando en la primera celda .... Cuando selecciono la casilla de verificación en tiempo de ejecución, Necesito obtener esos valores ... pero al seleccionar o al hacer clic en la casilla de verificación, no está encontrando o el valor está tomando como FALSO ... ¿cómo escribir en el backend asp.net y en el código C#?Cómo obtener valores de CheckBoxes dentro de una vista de cuadrícula que se comprueban usando asp .net

<asp:TemplateField> 
    <ItemTemplate > 
     <asp:checkbox id="ShowAddress" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

de código subyacente:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     // Looping through all the rows in the GridView 

     foreach (GridViewRow di in GridView1.Rows) 
     { 
     CheckBox chkBx = (CheckBox)di.FindControl("ShowAddress"); 

      if (chkBx != null && chkBx.Checked) 
      { 
       /// put your code here 
      } 
     } 
    } 

¿Hay alguna aplicación que hacerse en escritura en la carga de la página?

¿Alguien puede ayudar?

Respuesta

4

¿Cómo llenas tu GridView? Si haces esto en Page_Load, asegúrate de que no lo estás haciendo en las devoluciones (comprueba IsPostBack).

¿Su variable chkBx es nula?

El siguiente código funciona:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow row in GridView1.Rows) 
     { 
      CheckBox chk = row.Cells[0].Controls[0] as CheckBox; 
      if (chk != null && chk.Checked) 
      { 
       // ... 
      } 
     } 
    } 
+0

Sin su trabajo no ... no, no estoy usando evento de devolución en carga de la página .... Am teniendo gridview, con 1ª celda como casilla de verificación, si hago clic en 3 casillas de verificación de 5, entonces necesito que los casilleros marcados/marcados los mismos valores de fila para estar en el cuadro de texto ... ¿cómo es –

+0

@ user3814410 (Sam) ha publicado que > su respuesta funcionará si se usa la línea inferior. Incluso un control solo en la celda, el índice debe ser 1 no 0: 'CheckBox chk = row.Cells [0] .Controls [1] como CheckBox;' ¿Es cierto? ¿Debería editar su respuesta en consecuencia? – francis

4
StringCollection idCollection = new StringCollection(); 
string strID = string.Empty; 

for (int i = 0; i < GridView1.Rows.Count; i++) 
{ 
    CheckBox chkDelete = (CheckBox) GridView1.Rows.Cells[0].FindControl("chkSelect"); 
    if (chkDelete != null) 
    { 
    if (chkDelete.Checked) 
     { 
      strID = GridView1.Rows.Cells[1].Text; 
     idCollection.Add(strID); 
    } 
    } 
} 

para más detalles revise este enlace: http://www.itworld2.com/ghowto.aspx?id=69

1
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    Loadgridview();// its a correct 
    }//   not Loadgridview() here if you load above error is occur 
} 

comprobarlo

0
int i = 0; 
foreach (GridViewRow row in GridView1.Rows) 
{ 
    CheckBox chk = (CheckBox)GridView_AdminTags.Rows[i].Cells[0].FindControl("chkTag"); 
    if (chk != null) 
     if (chk.Checked) 
     { 
      ////.......; 
     } 
    i++; 
} 
i = 0; 
-1

Jakob respuesta funcionará si debajo de la línea es usado. Incluso uno de control sólo en la célula, índice de necesidad de estar 1 no 0

CheckBox chk = row.Cells[0].Controls[1] as CheckBox; 

Gracias Sam

+0

¡Bienvenido a Stackoverflow y gracias por sus comentarios! Publiqué un comentario a @JakobChristensen al respecto y la respuesta puede ser editada si es necesario. Una vez que obtenga cierta reputación, podrá comentar cualquier publicación. – francis

Cuestiones relacionadas