<asp:BoundColumn DataField="STOCK_QTY" ReadOnly="True" HeaderText="存存总值">
<HeaderStyle HorizontalAlign="Center" Width="40px"></HeaderStyle>
<ItemStyle HorizontalAlign="Left" Width="40px"></ItemStyle>
</asp:BoundColumn>如上:有什么方法控制STOCK_QTY在为0时显示为"-"?首先:由于程序要求,不能使用"用模板列".
有没有其它办法?另:在http://community.csdn.net/Expert/topic/4931/4931868.xml?temp=.8163568讨论过一些
方法,但都行不通.以下方法都未能行通:
1):出现Specified argument was out of the range of valid values错误
你可以在itemdatabound事件里面写代码
if(e.item.itemindex>=0)
{
string temp = e.item.cells[i].text.trim(); //请注意你自己的代码大小写,另外i是你这个绑定列的列序数
if(temp =="0")
e.item.cells[i].text = "-";
}
2)select case when 及ISNULL都出现:
"Arithmetic overflow error converting varchar to data type numeric错误,
原是:不能把数字转换为"-"
<HeaderStyle HorizontalAlign="Center" Width="40px"></HeaderStyle>
<ItemStyle HorizontalAlign="Left" Width="40px"></ItemStyle>
</asp:BoundColumn>如上:有什么方法控制STOCK_QTY在为0时显示为"-"?首先:由于程序要求,不能使用"用模板列".
有没有其它办法?另:在http://community.csdn.net/Expert/topic/4931/4931868.xml?temp=.8163568讨论过一些
方法,但都行不通.以下方法都未能行通:
1):出现Specified argument was out of the range of valid values错误
你可以在itemdatabound事件里面写代码
if(e.item.itemindex>=0)
{
string temp = e.item.cells[i].text.trim(); //请注意你自己的代码大小写,另外i是你这个绑定列的列序数
if(temp =="0")
e.item.cells[i].text = "-";
}
2)select case when 及ISNULL都出现:
"Arithmetic overflow error converting varchar to data type numeric错误,
原是:不能把数字转换为"-"
解决方案 »
- 请教,关于asp.net获取内容第一张图片的问题?
- 为什么获取不到服务器控件生成的客户端id?
- OSTA认证
- 数据库插入超时,比较紧急向大家求教了
- mysql在ASP。NET里怎么备份 恢复
- 谁知道实现xml节点模糊查询的方法??
- 网站被攻击,到底是怎么回事?如何防范!
- 怎样在asp.net中存取图片[用vb.net+oracle8i实现]?
- IIS7.5,framework4.0发布网站,不定时出现Object reference not set to an instance of an objec
- 100分求web项目如何发布到网站?
- 我是这个asp.net的新手,有个问题想问一下大家!
- 请问我的APP_Data为什么会出现这个问题?
"Arithmetic overflow error converting varchar to data type numeric错误,
原是:不能把数字转换为"-"---------------
把你的SQL贴出来看看。
例如:取数据的时候
case when STOCK_QTY when 0 then '-' else STOCK_QTY end
照着这样处理下就好了.
这种方式不行,我在上面已经说过,不信可以试一试.
贴你的SQL,你那个字段是什么类型的/
CREATE PROCEDURE dbo.Get_VendorBom
(@Item_No nvarchar(20))
AS
SET NOCOUNT ON
SELECT ITEM_NO,ITEM_DESCC AS ITEM_NAME,
CASE dbo.f_get_qty(ITEM_NO,'STOCK_QTY') WHEN 0 THEN '-' ELSE dbo.f_get_qty(ITEM_NO,'STOCK_QTY') END AS STOCK_QTY,
CASE dbo.f_get_qty(ITEM_NO,'ORDER_QTY') WHEN 0 THEN '-' ELSE dbo.f_get_qty(ITEM_NO,'ORDER_QTY') END AS ORDER_QTY,
CASE dbo.f_get_qty(ITEM_NO,'MRP_QTY') WHEN 0 THEN '-' ELSE dbo.f_get_qty(ITEM_NO,'MRP_QTY') END AS MRP_QTY
FROM KGMS2DB..ITEMMSTR
WHERE ITEM_NO LIKE LEFT(@ITEM_NO,18)+'%'
GROUP BY ITEM_NO,ITEM_DESCC
ORDER BY ITEM_NO
SET NOCOUNT OFF
RETURN
页面
<asp:TemplateColumn HeaderText="存存总值">
<ItemTemplate>
<%# getString( DataBinder.Eval(Container.DataItem ,'STOCK_QTY'))%>
</ItemTemplate>
</asp:TemplateColumn>后台cs函数:
protected string getString(object col)
{
return col.ToString()=="0"?"-":col.ToString();
}
所有需要处理为 '-'的列都调用这此函数,
(未测试,仅供参考,一定可以实现的)
以下方法都未能行通:
1):出现Specified argument was out of the range of valid values错误
你可以在itemdatabound事件里面写代码
if(e.item.itemindex>=0)
{
string temp = e.item.cells[i].text.trim(); //请注意你自己的代码大小写,另外i是你这个绑定列的列序数
if(temp =="0")
e.item.cells[i].text = "-";
}
2)select case when 及ISNULL都出现:
"Arithmetic overflow error converting varchar to data type numeric错误,
原是:不能把数字转换为"-"显示应该都没有问题的,应该是修改或新增的时从此以后不能将"-"存入数据库!
看你的报错应该是这样的问题。你存数据库的时候应该把“-”再替换为0就没有问题了。