2009-12-27 5 views
4

J'utilise la grille parent enfant et la grille enfant en cours d'exécution Afficher/masquer le script Java java. et la grille des enfants i lier temps courir avec Templatecolumns commeRechercher le contrôle à l'intérieur de la ligne de grille

GridView NewDg = new GridView(); 
NewDg.ID = "dgdStoreWiseMenuStock"; 

TemplateField TOTAL = new TemplateField(); 
TOTAL.HeaderTemplate = new BusinessLogic.GridViewTemplateTextBox(ListItemType.Header, "TOTAL",e.Row.RowIndex); 
TOTAL.HeaderStyle.Width = Unit.Percentage(5.00); 
TOTAL.ItemTemplate = new BusinessLogic.GridViewTemplateTextBox(ListItemType.Item, "TOTAL", e.Row.RowIndex); 
NewDg.Columns.Add(TOTAL); 

NewDg.DataSource = ds; 
NewDg.DataBind(); 


NewDg.Columns[1].Visible = false; 
NewDg.Columns[2].Visible = false; 

System.IO.StringWriter sw = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
NewDg.RenderControl(htw); 

Maintenant, j'ai un TextBox dans la grille nommée « TOTAL » Je veux trouver ce TextBox et que vous souhaitez obtenir sa valeur.

Comment l'obtenir?

+0

comment il est possible? – user239146

Répondre

2

Comme vous le savez, vous pouvez obtenir la valeur TextBox par exemple pour la première ligne et la première cellule:

((TextBox) dgdStoreWiseMenuStock.Rows[0].Cells[0].Controls[1]).Text; 

ou modifier l'indice de contrôle mis 0 si le travail de la ligne ci-dessus ne marche pas.

4

Vous pouvez obtenir le contrôle TextBox dans la cellule correspondante du GridView, en utilisant la propriété Controls ou la méthode FindControl(string id):

TextBox txtTotal = gv.Rows[index].cells[0].Controls[0] as TextBox; 

ou

TextBox txtTotal = gv.Rows[index].cells[0].Controls[0].FindControl("TOTAL") as TextBox; 

où l'indice pourrait être 0 pour la première ligne, ou un itérateur à l'intérieur d'une boucle for.

Vous pouvez utiliser une boucle foreach sur les lignes de la GridView:

foreach(GridViewRow row in gv.Rows) 
{ 
    TextBox txtTotal = row.cells[0].Controls[0].FindControl("TOTAL") as TextBox; 
    string value = txtTotal.Text; 

    // Do something with the textBox's value 
} 

En outre, vous devez garder à l'esprit que, si vous créez GridView dynamiquement (et non déclarative dans le formulaire Web), vous ne pourrez pas obtenir ce contrôle après une publication de page.

Il y a un grand 4 gars de Rolla article sur le sujet: Dynamic Web Controls, Postbacks, and View State

1

Essayez cette

TextBox txtTotal = (TextBox)gv.Rows[index].cells[0].FindControl("TOTAL"); 
string value = txtTotal.Text; 
Questions connexes