2010-06-08 60 views
1

Ultrawridrid 9.2 VS2008 .net 3.5Ultrawingrid - 如何显示#1/1/1800#空白(如果为空)

我的wingrid使用绑定源。在SQL Server中为空的所有日期时间都以#1/1/1800的形式发送到绑定源#

我希望Ultrawingrid将此日期显示为空白,因为它将显示为null。另外,如果网格中的日期为空(即空白),我想将数据源更新为日期#1/1/1800#(框架负责将该日期返回到后端作为一个空)

这似乎应该是一个小事,但我可以找到没有文件介绍了在哪里介入,所以网格将看到一个特定的日期为null,并保存null作为特定的日期。

这是我一直在领导的方向,但我不认为这两个都是正确的地方,我甚至无法获得在BeforeRowUpdate中工作的语法,因为我看不到如何设置传递的值该数据没有设置控制本身的价值结合,我认为这是为了显示为空白

Private Sub ugPropMaster_BeforeRowUpdate(ByVal sender As Object, ByVal e As _ 
    Infragistics.Win.UltraWinGrid.CancelableRowEventArgs) Handles _ 
    ugPropMaster.BeforeRowUpdate 

    If e.Row.Cells.Item("Exdate").Value Is Nothing Then 

     e.Row.Cells("Exdate").Value = CDate(#1/1/1800#) 

    End If 

End Sub 



    Private Sub ugPropMaster_InitializeRow(ByVal sender As Object, ByVal e As _ 
    Infragistics.Win.UltraWinGrid.InitializeRowEventArgs) Handles _ 
    ugPropMaster.InitializeRow 

    If CDate(e.Row.Cells.Item("Exdate").Value) = CDate(#1/1/1800#) Then 
     e.Row.Cells.Item("Exdate").Value = Nothing 
    End If 

End Sub 

指导保持空大加赞赏

回答

0

你有一个UltraDataSource支持网格?如果是这样,那么e.Row.ListObject应该是对应于网格行的UltraDataRow。

我经常保持在UltraDataRow的标记属性业务对象的引用,我结束了看起来像这样的(道歉C#,而不是VB.net)InitializeRow方法:

private void mygrid_InitializeRow(object sender, InitializeRowEventArgs e) 
    { 
     try 
     { 
      UltraDataRow udr = e.Row.ListObject as UltraDataRow; 
      if (udr == null) 
      { 
       return; 
      } 

      MyRecord rec = udr.Tag as MyRecord; 
      if (rec == null) 
      { 
       return; 
      } 

      ... 

你可以还可以从udr.Band.Cells访问基础数据源值。

希望这会有所帮助!

+0

谢谢你,保罗。不,我在网格下没有UDS - 我使用我们框架的businessbindingsource来扩展bindingsource。但我认为这可能是一个探索的方向 - 也许使用我们的BBS作为UDR的来源......它可能会给我一个我需要的抽象层。 我有一些工作使用未绑定的列和处理程序的InitializeRow和AfterCellUpdate。它不漂亮,但它的工作原理。 我会研究UltraDataSource,看看我能不能拿出一些东西。 再次感谢。查尔斯 – 2010-06-09 22:42:53

0

您可以使绑定源上的属性为空吗DateTime?