2010-12-15 94 views
0

Désolé, je suis rempli d'erreurs aujourd'huiutilisant un texte d'étiquette dans le cadre de mon en-tête gridview

Parser Error 
    Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

    Parser Error Message: System.Web.UI.WebControls.DataControlFieldCollection must have items of type 'System.Web.UI.WebControls.DataControlField'. 'ItemTemplate' is of type 'System.Web.UI.HtmlControls.HtmlGenericControl'. 

    Source Error: 


    Line 66:        
    Line 67: <asp:TemplateField HeaderText="AS of" & label2.text> 
    Line 68: <ItemTemplate> 
    Line 69: <%#Getsales(Decimal.Parse(Eval("AsOFSales").ToString())).ToString("C0")%> 
    Line 70: </ItemTemplate> 

Répondre

1

Comme M. TA dit, vous devez faire ces changements de votre code derrière. Quelque chose comme le code ci-dessous - il suffit de remplacer le? (?) dans les cellules avec le (indice de base zéro) du numéro de colonne dans votre grille (ou w

Protected Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) handles DataGrid1.ItemDataBound 
    If (e.Item.ItemType = ListItemType.Header) Begin 
     e.Item.Cells(?).Text = "AS of" & label2.text 
    End If 
End Sub 
+0

pour votre méthode comment pourrais-je choisir qui l'en-tête de colonne est changé, parce que je veux le faire pour plusieurs colonnes merci – MyHeadHurts

+0

il suffit d'ajouter d'autres lignes comme celle e.Item.Cells (?). La première colonne de votre grille est le numéro 0, chacun est supérieur d'un. Si vous souhaitez modifier la valeur des lignes qui sont dans l'en-tête, vous devez ajouter une autre qui évalue la ItemType et correspond ListItemType.AlternatingItem ou ListItemType.Item. – PhillFox

+0

merci, question stupide. mais im apprentissage – MyHeadHurts

1

Vous ne pouvez pas avoir un code VB.NET ASP.NET dans le balisage. Si vous voulez modifier HeaderText, faites-le en code-behind.

1

Vous ne pouvez pas le faire:

Line 67: <asp:TemplateField HeaderText="AS of" & label2.text> 

Il serait préférable de le laisser blanc et le mettre dans le code derrière lors de l'événement RowDataBound.

Protected Sub myGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles myGridView.RowDataBound 
    If e.Row.RowType = DataControlRowType.Header Then 
     Dim e.Row.Cells(2).Text = "As of " & Label2.Text 
    End If 
End Sub 

Cela suppose que vous n'avez pas activé sur le tri GridView. Si vous avez le tri est activé, vous devrez d'abord trouver le contrôle LinkButton et Chang e sa valeur de texte. J'ai également utilisé la valeur arbitraire 2 dans l'identifiant Cells. Vous devrez utiliser le numéro de colonne numérique pour la cellule que vous voulez.

+0

merci pour votre réponse, je me demande comment je pourrais le faire pour plusieurs colonnes. ou Comment sélectionner quelle colonne pour modifier l'en-tête pour – MyHeadHurts

+0

@MyHeadHurts - Les colonnes sont rendues comme une matrice de cellules (sous forme de tableau). Pour sélectionner la colonne, il suffit d'utiliser l'index de la cellule dans ce tableau. e.Row.Cells (0) est la première cellule. –