2010-11-10 8 views
0

J'ai un GridView et je veux rafraîchir une ligne (pas toute la grille) quand elle est sélectionnée. J'ai essayé de changer la propriété Text pour chacun des GridView.SelectedRow.Cells lorsque les changements d'index sélectionnés par la grille. Il semble fonctionner pour DataField, mais pas pour TemplateField. Pour TemplateField j'ai obtenu des résultats étranges - la valeur pour la rangée sélectionnée change correctement, mais quand je choisis une autre rangée, la valeur de TemplateField pour la ligne précédemment sélectionnée devient vide. illustration brève:Comment modifier dynamiquement la valeur de TemplateField?

1. Nothing selected 
-------------------------- 
id   template_field 
-------------------------- 
1   value_1 
2   value_2 

2. First record selected 
-------------------------- 
id   template_field 
-------------------------- 
1   updated_value_1 
2   value_2 

3. Second record selected 
-------------------------- 
id   template_field 
-------------------------- 
1   [blank!] 
2   updated_value_2 

Finalement, je finis avec blanc template_field pour chaque enregistrement à l'exception sélectionné. Quelle est la bonne façon de changer le texte de TemplateField?

Répondre

1

Essayez d'ajouter un contrôle TextBox à votre modèle et modifiez au lieu du contenu de la cellule. Vous devriez pouvoir y arriver par quelque chose comme ceci:

TextBox tb = GridView.SelectedRow.Cells[0].Controls[0] as TextBox; 
if(tb != null) 
    tb.Text = newValue; 
+0

Je vais essayer. J'ai déjà essayé de changer 'Text' de' Controls [0] ', mais cette propriété est en lecture seule, donc cela n'a pas fonctionné. – a1ex07

+0

Mais avez-vous ajouté un contrôle TextBox au champ de modèle? Alors que vous essayez de changer le contenu d'un TextBox (qui a son propre viewstate, alors vous devriez vous souvenir des changements). – CodingGorilla

+0

Je l'essaie maintenant ... Merci pour l'idée. – a1ex07

Questions connexes