2010-06-17 3 views
1

Je travaille sur asp.net en utilisant le contrôle gridview. J'ai une colonne de bouton que je crée dynamiquement en tant que tel:Gridview changer de texte dans une colonne de bouton

  ButtonField bfSelect = new ButtonField(); 
      bfSelect.HeaderText = "View"; 
      bfSelect.ButtonType = ButtonType.Link; 
      bfSelect.CommandName = "View"; 
      bfSelect.Text = "View"; 

      grdAttachments.Columns.Add(bfSelect); 

Le texte sur le bouton est le même pour chaque ligne. Je me demandais s'il y avait un moyen de faire en sorte que le texte soit différent pour différentes lignes en fonction d'une condition. Lorsque j'essaie de regarder la propriété text d'une ligne particulière, elle est vide, si j'essaie de la définir, elle ne change pas.

Merci d'avance.

Bob

Répondre

0

Il y a quelques façons de faire, du haut de ma tête, je vous suggère de changer la valeur en cas RowDataBind.

Ceci est la main typé, donc il peut y avoir des fautes de frappe ..

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row .RowType == DataControlRowType .DataRow) 
    { 
    Button button = (Button)e.Row.Cells[0].Controls[0]; 
    button.Text = "Your New Value"; 
    } 
} 
1

dans le RowDataBound événement vous pouvez vérifier la ligne actuelle. Par exemple:

String text = ((Label)e.Row.FindControl("aLabel")).Text; 
if(text == "Yes") 
{ 
    ((LinkButton)e.Row.FindControl("bfSelect").Text = "Good to go!"; 
} 

Pour cela, vous devez également définir l'ID du bouton sur bfSelect.

Grz, Kris.

+0

J'essaie ce code exact, et quand j'essaie d'entrer .Text, la case d'option ne fonctionne pas apparaitre. Si je l'écris quand même, l'erreur que cela me donne est 'System.Web.UI.Control' ne contient pas de définition pour 'Text'. – Jared

0

Le meilleur est modifier en Javascript: [. Si vous n'utilisez pas ajax]

$("#GridView1 tr td a").html("Custom_Delete_Text"); 
$("#GridView1 tr td a").addClass("another class you wish"); 

Questions connexes