【发布时间】:2013-12-12 23:48:15
【问题描述】:
对于如何修复此处的错误,我感到有些困惑。我有一个带有一系列数字的网格视图(它们在数据库中的显示方式示例如下),我想在其中添加逗号。我试图用文字(下面的代码)在 ASP 代码中完成这项工作。与下面的东西相关联的表可以调用 foo,列名称为“count”。如果没有 TemplateField 和文字(如下所述),gridview 可以正常工作。但是,当我在下面添加 TemplateField 时,我得到一个“对象不能从 DBNull 转换为其他类型”。从浏览器。我要做的就是让gridview 输出在ASP 代码中而不是在数据库中显示逗号。
我尝试过的:
首先我认为可能有一些奇怪的字符、尾随空格或类似的东西,所以我运行了以下命令:
select * from foo where count not like '%[^0-9]%'
只有它返回表中的每一个条目。我手动检查了一些结果,并且在我想添加逗号的列中没有任何尾随空格或奇数字符。
我很困惑接下来要尝试什么,因为我已经能够让它在我的测试服务器上工作,但不能在生产环境中工作。
列示例
计数
2345342
4356546
3245234534
67465745675
43523452345
546234523452345
32452345
4352345234
4352345
345234
当我们从各种来源导入数据时,这些数据作为 NVARCHAR(MAX)(允许为空)输入到数据库中。
代码
<asp:TemplateField HeaderText="Count" SortExpression="count">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("count") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Literal ID="Literal1" runat="server" Text='<%# string.Format("{0:N0}", Convert.ToDecimal(Eval("count"))) %>'>
</asp:Literal>
</ItemTemplate>
<HeaderStyle BackColor="#6699FF" />
</asp:TemplateField>
错误
对象不能从 DBNull 转换为其他类型。
【问题讨论】:
标签: c# asp.net sql gridview literals