2015-03-28 1 views
0

Je tente de créer des zones de texte égales au nombre de lignes dans la vue de la grille (databound à partir de db). voici mon balisageÉlément ID d'élément de modèle non existant dans le code

<asp:GridView ID="quizGrid" runat="server" CssClass="Grid" AutoGenerateColumns="false"> 
      <Columns> 
       <asp:BoundField DataField="admissionNO" HeaderText="Admission NO"/> 
       <asp:BoundField DataField="studentName" HeaderText="Name" /> 
        <asp:TemplateField> 
         <ItemTemplate> 
          <asp:Textbox runat="server" ID="marks" > </asp:Textbox> 
         </ItemTemplate> 
        </asp:TemplateField> 
      </Columns> 

mais quand j'utiliser les marques dans le code derrière elle dit

quizGrid_marks_0 n'existe pas dans le contexte actuel

ce im faire mal ici?

+0

Votre question n'est pas claire. Tout d'abord vous ne pouvez pas accéder à votre zone de texte comme cela dans votre code derrière le fichier, ensuite vous avez dit "J'essaye de créer des zones de texte" mais en question vous essayez d'aller chercher l'identifiant. Soyez précis s'il vous plait. –

+0

@RahulSingh en essayant de créer des boîtes de texte moyennes, iwant autant que les lignes sont générées, d'autre part, je tape simplement marks = "" et il est dit ci-dessus –

Répondre

0

Vous ne pouvez pas accéder à votre zone de texte comme dans le code derrière le fichier, vous devez plutôt les trouver dans l'événement RowDataBound comme ceci: -

protected void quizGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if(e.Row.RowType == DataControlRowType.DataRow) 
      { 
       TextBox marks = (TextBox)e.Row.FindControl("marks"); 
       txtMarks.Text = "Test"; 
      } 
     } 

Edit:

Bon, supposons vous avez un bouton btnGetData avec un événement de clic de bouton comme btnGetData_Click, alors vous pouvez trouver le texte de la zone de texte en faisant défiler les lignes gridview comme ceci: -

protected void btnGetData_Click(object sender, EventArgs e) 
{ 
    GridView quizGrid = (GridView)Page.FindControl("quizGrid"); 
    foreach (GridViewRow row in quizGrid.Rows) 
    { 
     TextBox marks = (TextBox)row.FindControl("marks"); 
    } 
} 
+0

est-ce un bon événement? je veux obtenir le texte de toutes les zones de texte sur le clic d'un bouton –

+0

D'accord et où est ce bouton situé? En dehors de la grille ou à l'intérieur? –

+0

en dehors de la grille –