ASP.NET GridView utilisation FindControl() sur BoundField à manipuler champ
Je travaille avec un vieux app qui avait codé en dur colonnes pour des endroits différents, maintenant que de nouveaux sites sont ajoutés j'ai décidé d'essayer et de faire les choses remplir dynamiquement. L'une des caractéristiques de l'application a été d'afficher le texte en rouge et en gras, texte lorsqu'un état a été considéré comme "mauvais". Cela a été exécutée à l'aide de la "FindControl()" la fonction de la cellule au sein de la ligne sélectionnée avec TemplateFields.
Maintenant que j'ai le configurer pour utiliser un champ lié, comment pourrais-je aller sur la modification de la couleur du texte, taille, etc. au cours de l'événement DataBound?
BoundField Être Ajouté À GridView
BoundField statusField = new BoundField();
statusField.DataField = "ExceptionStatusCode";
statusField.HeaderText = "Status";
statusField.SortExpression = "ExceptionStatusCode";
this.gvView.Columns.Add(statusField);
Lié Aux Données D'Événement Pour GridView
protected void gvView_DataBound(object sender, EventArgs e)
{
foreach (GridViewRow row in this.gvView.Rows)
{
//NO LONGER WORKS, NEED TO KNOW HOW TO REPRODUCE
//WHAT IS BELOW FOR BOUND FIELD
Label lblPartStatus = ((Label) row.Cells[StatusColumn].FindControl("lblPartStatus"));
if (lblPartStatus.Text == "BAD")
{
lblPartStatus.ForeColor = System.Drawing.Color.Red;
row.ToolTip = "One or more locations is missing information!";
row.BackColor = System.Drawing.Color.Salmon;
}
}
}
OriginalL'auteur RSolberg | 2011-07-21
Vous devez vous connecter pour publier un commentaire.
Il y a des années, j'ai écrit un peu de code pour vous aider à trouver une cellule d'index à l'aide de la colonne SortExpression, HeaderText ou DataField. Il m'a sauvé beaucoup d'efforts au cours des années, et vous venez juste de l'appeler comme
myRow.Cells[myRow.GetCellIndexByFieldHandle(myDataFieldName)]
Une fois que vous avez la cellule, je vous suggère de le manipuler par la mise en
Cell.CssClass
, puis à l'aide de CSS pour le style en conséquence. Orienter clairement de style en ligne, qui est ce que vous obtenez lorsque vous définissezForeColor
,BackColor
etc.OriginalL'auteur James McCormack
Si vous avez toujours X colonnes dans votre grille, vous pouvez y accéder comme ça:
maintenant changer de cellule indice à ce que l'indice de colonne vous êtes intéressé par l'a...
fixez la fonction de OnRowDataBound de l'événement au lieu de OnDataBound
OriginalL'auteur Daniel Gruszczyk
Brut solution serait d'ajouter l'index de colonne dans l'état d'affichage ...
... et puis de l'utiliser à nouveau sur databound
OriginalL'auteur rkw