2010-12-15 3 views
0

Leider habe ich mit Fehlern gefüllt bin heuteProblem mit Beschriftungstext als Teil meines Gridview-Header

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> 

Antwort

1

Wie Herr TA sagte, müssen Sie diese Änderungen von Ihrem Code hinterher machen. So etwas wie der Code unten - ersetzen Sie einfach die? (?) In Zellen, die mit dem (Null basierenden Index) der Spaltennummer in Ihrem Raster (oder 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

für Ihre Methode wie würde ich wählen, welche Spalte die Überschrift geändert wird, weil ich dies für mehrere Spalten tun möchte danke – MyHeadHurts

+0

Fügen Sie einfach weitere Zeilen wie die e.Item.Cells (?). Die erste Spalte in Ihrem Raster ist Nummer 0, jede ist eine höhere. Wenn Sie den Wert der Zeilen im Header ändern möchten, müssen Sie ein ELSE hinzufügen, das ItemType auswertet und ListItemType.AlternatingItem oder ListItemType.Item entspricht. – PhillFox

+0

danke, dumme Frage. aber ich lerne – MyHeadHurts

1

Sie können nicht VB.NET-Code in ASP.NET-Markup haben. Wenn Sie HeaderText ändern möchten, tun Sie dies in Code-Behind.

1

Sie können dies nicht tun:

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

Es wäre am besten, es zu verlassen leer und es in dem Code hinter während der RowDataBound Veranstaltung.

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 

Dies setzt voraus, dass Sie auf dem Gridview nicht aktiviert haben zu sortieren. Wenn Sie aktiviert haben Sie die Sortierung, werden Sie zuerst den Linkbutton-Steuerelement finden müssen und chang e sein Textwert. Ich habe auch den willkürlichen Wert 2 in der Cells-Kennung verwendet. Sie müssten die numerische Spaltennummer für die gewünschte Zelle verwenden.

+0

Vielen Dank für Ihre Antwort, ich frage mich nur, wie ich das für mehrere Spalten tun könnte. oder wie wähle ich aus, welche Spalte den Header für – MyHeadHurts

+0

@MyHeadHurts ändern soll - Die Spalten werden als ein Array von Zellen (in einer Tabelle) gerendert. Um die Spalte auszuwählen, verwenden Sie einfach den Index der Zelle in diesem Array. e.Row.Cells (0) ist die erste Zelle. –

Verwandte Themen