VB.NET2003中DATAGRID里 零 值的显示问题

九斤半 2006-11-30 05:01:29
Dim TS As New DataGridTableStyle
Dim TC As New DataGridTextBoxColumn

TC = New DataGridTextBoxColumn
TC.MappingName = "QTY"
TC.HeaderText = "数量"
TC.Width = 80
TC.NullText = ""
TC.Format = "0.00##;-0.00##"
TC.Alignment = HorizontalAlignment.Right
TS.GridColumnStyles.Add(TC)

我想让QTY=0的值不显示,即跟NullText=""那样的,该如何设置啊?

在线急等.
...全文
238 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ou108 2006-12-16
  • 打赏
  • 举报
回复

回答得這麼多
來晚了,用iif是正點
九斤半 2006-12-16
  • 打赏
  • 举报
回复
W_W_Q(韦一笑) 的重绘应该可以,不过不想重绘,因为牵涉到其它方面的问题。

想到另一个办法:先在数据库(MS SQL)中处理一下
SELECT ……,CASE WHEN QTY=0 THEN NULL ELSE QTY END AS QTY FROM ……
然后再 TC.NullText = ""

虽然这样可以,不过也没有这样做,希望得到其它的更好的答案。
九斤半 2006-12-05
  • 打赏
  • 举报
回复
TC.MappingName = IIf(QTY=0,"","QTY") ' 不行
TC.MappingName = IIf("QTY"=0,"","QTY") ' 不行
TC.MappingName = IIf("QTY=0","","QTY") ' 不行
hzybc 2006-12-05
  • 打赏
  • 举报
回复
TC.MappingName = iif(QTY=0,"","QTY")
netcup 2006-12-04
  • 打赏
  • 举报
回复
帮忙顶
leq_82 2006-11-30
  • 打赏
  • 举报
回复

股神 2006-11-30
  • 打赏
  • 举报
回复
W_W_Q 2006-11-30
  • 打赏
  • 举报
回复
这样可以重写DataGridTextBoxColumn,很简单
Public Class myDataGridTextBoxColumn

Inherits DataGridTextBoxColumn '继承




Private Function GetText(ByVal Value As Object) As String

'为进行重绘读出textbox中的内容,这个函数是增加容错能力的,与实现机制无关

If TypeOf (Value) Is System.DBNull Then

Return NullText

ElseIf Value Is Nothing Then

Return ""

Else

Return Value.ToString

End If

End Function



Protected Overloads Overrides Sub Paint( _
ByVal g As System.Drawing.Graphics, _
ByVal bounds As System.Drawing.Rectangle, _
ByVal source As System.Windows.Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal backBrush As System.Drawing.Brush, _
ByVal foreBrush As System.Drawing.Brush, _
ByVal alignToRight As Boolean)



Dim text As String

'按默认模式重绘

text = GetText(GetColumnValueAtRow(source, rowNum)) '这句就是上文提及的取数据

If CDec(text) = 0 Then '如果是0
MyBase.PaintText(g, bounds, "", backBrush, foreBrush, alignToRight)
Else
MyBase.PaintText(g, bounds, CDec(text).ToString(MyBase.Format), backBrush, foreBrush, alignToRight)
End If



End Sub

End Class
九斤半 2006-11-30
  • 打赏
  • 举报
回复
zicxc(冒牌邹建 V0.3) ( ) 信誉:100 Blog

有没试过

TC.Format = "0.00;-0.00"
------------------------
那它就显示0.00了 ##是有数则显示,为零则不显示.

Format可能不行.
zicxc 2006-11-30
  • 打赏
  • 举报
回复
有没试过

TC.Format = "0.00;-0.00"
zmaini1420 2006-11-30
  • 打赏
  • 举报
回复
不会,来帮你顶下,随便来看看学习下
zicxc 2006-11-30
  • 打赏
  • 举报
回复
他只有 九斤半 ,要不饶你5毛钱
catlee1027 2006-11-30
  • 打赏
  • 举报
回复
老板,来十斤椅子

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧