Ich benutze eine GridView in asp.net 2.0 und ich möchte inline bearbeiten. Ich verwende eine Objektdatenquelle. Da ich Validierungssteuerelemente für die Ganzzahlfelder in meiner Gridview verwenden möchte, habe ich sie in <TemplateFields>
umgewandelt und einen Datentypvalidator und einen Bereichsvalidierer hinzugefügt. Dadurch kann ich entweder ein leeres Feld oder einen ganzzahligen Wert zwischen 0 und 999 haben.ASP.NET - GridView - EditItem - Nullwert für Ganzzahlen?
Ich versuche ein "-" anzuzeigen, wenn der Wert der Eigenschaft nicht definiert ist. Es gibt keine Null für eine ganze Zahl, also habe ich beschlossen, -1 als Wert zu verwenden, um eine Null anzuzeigen.
Ich formatiere die um das "-" anzuzeigen, wenn der Wert -1 ist. Ich mache das wie folgt:
<ItemTemplate>
<asp:Label ID="lblPC" runat="server" Text='<%# FormatIntegerToText(Eval("PitchCount"),"-") %>'></asp:Label>
</ItemTemplate>
Im Code hinter ich die Funktion FormatIntegerToText definiert sich wie folgt:
Protected Function FormatIntegerToText(ByVal value As Object, ByVal nullvalue As String) As String
' Make sure value is not null... if so, return "-"
If value = Null.NullInteger() Then
Return nullvalue
Else
Return value.ToString()
End If
End Function
All dies funktioniert super. Jetzt kommt das Problem ... wenn ich meine Schaltfläche Bearbeiten klicken, wird der <EditItem>
angezeigt wird (mit Textboxen etc.), aber alle „null“ Werte angezeigt als -1
Ich habe diese Zeit als meine <EditItemTemplate>
<EditItemTemplate>
<asp:textbox ID="txtPC" runat="server" Text='<%# Bind("PitchCount") %>' width="25" Columns="2"></asp:textbox>
....a couple of validators....
</EditItemTemplate>
obwohl
ich, ich könnte den Wert der folgenden umformatieren tun, die in das Textfeld platziert wird:
<EditItemTemplate>
<asp:textbox ID="txtPC" runat="server" Text='<%# FormatIntegerToText(Bind("PitchCount")) %>' width="25" Columns="2"></asp:textbox>
aber wenn ich dies tun, erhalte ich einen Übersetzungsfehler, dass Bind keine anerkannte Funktion ist.
Meine Frage ist, warum ist das nicht erlaubt, und wie kann ich es umgehen?