J'ai un DataTable
qui contient 3 champs: ACount
, BCount
et DCount
. Si ACount < 0
alors j'ai besoin d'afficher 'S' dans l'une des colonnes du GridView
. Si ACount > 0
alors je dois afficher 'D' dans cette colonne (dans l'étiquette). Même chose avec BCount
et DCount
. Comment puis-je effectuer cette vérification conditionnelle dans la fonction RowDataBound
?Fonction RowDataBound de GridView
2
A
Répondre
5
L'événement GridView OnRowDataBound
est votre ami:
<asp:gridview
id="myGrid"
onrowdatabound="MyGrid_RowDataBound"
runat="server">
<columns>
<asp:boundfield headertext="ACount" datafield="ACount" />
<asp:boundfield headertext="BCount" datafield="BCount" />
<asp:boundfield headertext="DCount" datafield="DCount" />
<asp:templatefield headertext="Status">
<itemtemplate>
<asp:label id="aCount" runat="server" />
<asp:label id="bCount" runat="server" />
<asp:label id="dCount" runat="server" />
</itemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
// Put this in your code behind or <script runat="server"> block
protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType != DataControlRowType.DataRow)
{
return;
}
Label a = (Label)e.Row.FindControl("aCount");
Label b = (Label)e.Row.FindControl("bCount");
Label d = (Label)e.Row.FindControl("dCount");
int ac = (int) ((DataRowView) e.Row.DataItem)["ACount"];
int bc = (int) ((DataRowView) e.Row.DataItem)["BCount"];
int dc = (int) ((DataRowView) e.Row.DataItem)["DCount"];
a.Text = ac < 0 ? "S" : "D";
b.Text = bc < 0 ? "S" : "D";
d.Text = dc < 0 ? "S" : "D";
}
Je ne sais pas où vous voulez que le « S » et « D caractères rendus, mais vous devriez être en mesure de remanier pour répondre à vos besoins.
2
Cela a fonctionné pour moi .... Je dois être malentendu quelque chose alors j'ai dû remplacer les supports angulaires avec [ou] pour l'ASP donc juste être conscient de cela.
[asp:TemplateField runat="server" HeaderText="Header"]
[ItemTemplate]
[asp:Label ID="theLabel" runat="server" Text='[%# Eval("DataSource").ToString()
%]'][/asp:Label]
[/ItemTemplate]
[/asp:TemplateField]
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label newLabel = (Label)e.Row.FindControl("theLabel");
if (newLabel.Text.Length > 20) //20 is cutoff length
{
newLabel.Text = lbl.Text.Substring(0, 20);
newLabel.Text += "...";
}
}
}
Questions connexes
- 1. Rowdatabound of gridview
- 2. GridView .DataBind RowDataBound ne pas tirer
- 3. Manipuler des résultats dans GridView RowDataBound ou directement dans SQL?
- 4. Pour obtenir l'argument command dans l'événement rowdatabound dans gridview
- 5. Gridview Filtrage fonction intégrée?
- 6. AddHandler ne se déclenche pas dans rowdatabound
- 7. L'événement Button Click est déclenché après rowdatabound pour la vue en grille
- 8. ajouter une ligne de filtre à gridview
- 9. masquer une ligne GRIDVIEW dans asp.net
- 10. comment faire GridView modifier le lien appelle la fonction javascript?
- 11. Remplacer une ligne gridview pendant le rendu
- 12. Difficulté avec les événements PostBack GridView
- 13. Valider un Gridview
- 14. Gridview
- 15. Comment afficher dynamiquement des images dans un gridview asp.net?
- 16. GridView, Accès enfant GridView case à cocher
- 17. cliquez ligne dans gridview
- 18. problème de contrôle gridview
- 19. lignes de suppression GridView
- 20. C# ASP.NET Gridview réductible
- 21. Gridview Classé événement
- 22. GridView Row sélectionnable
- 23. Comment avoir une fonction commune pour trier dans un gridview dans le fichier de classe C#
- 24. Problème: Tri pour les modifications GridView/ObjectDataSource en fonction de la page
- 25. Ajuster Gridview Largeur
- 26. GridView dans ASP.NET 2.0
- 27. ASP.Net GridView Tri
- 28. Boutons du contrôle gridview
- 29. Exporter Gridview vers Excel avec des lignes au format texte
- 30. Wordwrap Gridview
Quelle version de .NET framework utilisez-vous et quel contrôle essayez-vous d'utiliser, DataGridView? –