ASP.NET-GridView-EditItem-整数的空值?
我正在asp.net 2.0中使用GridView,我想执行内联编辑。我正在使用一个对象数据源。因为我想在gridview中的整数字段上使用验证控件,所以我将它们制作成ASP.NET-GridView-EditItem-整数的空值?,asp.net,vb.net,Asp.net,Vb.net,我正在asp.net 2.0中使用GridView,我想执行内联编辑。我正在使用一个对象数据源。因为我想在gridview中的整数字段上使用验证控件,所以我将它们制作成,并添加了数据类型验证程序和范围验证程序。这允许我有一个空白字段,或一个介于0和999之间的整数值 我试图在未定义属性值时显示“-”。整数没有空值,所以我决定使用-1作为表示空值的值 如果值为-1,我将重新格式化以显示“-”。我的做法如下: <ItemTemplate> <asp:Label ID="lbl
,并添加了数据类型验证程序和范围验证程序。这允许我有一个空白字段,或一个介于0和999之间的整数值
我试图在未定义属性值时显示“-”。整数没有空值,所以我决定使用-1作为表示空值的值
如果值为-1,我将重新格式化以显示“-”。我的做法如下:
<ItemTemplate>
<asp:Label ID="lblPC" runat="server" Text='<%# FormatIntegerToText(Eval("PitchCount"),"-") %>'></asp:Label>
</ItemTemplate>
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
所有这些都非常有效。现在问题来了…当我单击编辑按钮时,会显示
(带有文本框等),但所有“null”值都显示为-1
我目前将此作为我的
…一对验证器。。。。
我想我可以执行以下操作来重新格式化文本框中的值:
<EditItemTemplate>
<asp:textbox ID="txtPC" runat="server" Text='<%# FormatIntegerToText(Bind("PitchCount")) %>' width="25" Columns="2"></asp:textbox>
但是当我这样做时,我得到一个编译错误,Bind不是一个可识别的函数
我的问题是,为什么这是不允许的,我如何才能解决它?您可能希望以不同的方式来解决这个问题。创建模板列而不是使用绑定列。。。这将使您能够完全控制内容,并允许您编写一个函数来在显示期间格式化文本,以及在编辑时将内容设置为适当的值。Bind实际上不是一个函数,这就是为什么会出现编译错误。详情请参阅 尝试用Eval替换Bind 您还需要在RowUpdate事件处理程序中存储新值:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
e.NewValues["PitchCount"] =
((TextBox)((GridView)sender).Rows[e.RowIndex].FindControl("txtPC")).Text;
}
另一种方法是使用。使用
可为空(指整数)
代替整数。然后,使用以显示“-”而不是NULL:
<asp:BoundField DataField="PitchCount" NullDisplayText="-" HeaderText="PitchCount"
SortExpression="PitchCount />
<asp:BoundField DataField="PitchCount" NullDisplayText="-" HeaderText="PitchCount"
SortExpression="PitchCount />