2010-06-08 4 views
1

Ultrawingrid 9.2 VS2008 .net 3.5Ultrawingrid - как отобразить №1/1/1800 # в качестве пустой (как если нуль)

Мой wingrid использует BindingSource. Все временные абзацы, которые являются нулевыми в SQL Server, доставляются в источник связывания как # 1/1/1800 #

Я хотел бы, чтобы Ultrawingrid отображал эту дату как пустую, так как она была бы пустой от источника.

Кроме того, если дата имеет нулевое значение в сетке (т.е. закрыто), я хотел бы обновить источник данных до даты # 1/1/1800 # (структура позаботится о том, чтобы вернуть эту дату в бэкэнд в качестве нулевого значения)

Похоже, что это должно быть тривиальным вопросом, но я не могу найти документацию о том, где именно вмешаться, поэтому сетка увидит конкретную дату как нуль и сохранит нуль как конкретную дату.

Это направление, в котором я возглавлял, но я не думаю, что это подходящее место, и я даже не могу заставить синтаксис работать в 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, и я в конечном итоге с помощью методов InitializeRow, которые выглядят, как это (апологетики C# вместо VB.net):

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 под сеткой - я использую бизнес-источник business framework, который расширяет bindingsource. Но я думаю, что это может быть направление для изучения - возможно, использование нашей BBS в качестве источника для UDR ... Это может дать мне слой абстракции, в которой я нуждаюсь. У меня есть что-то работающее с использованием несвязанного столбца и обработчиков для InitializeRow и AfterCellUpdate. Это некрасиво, но это работает. Я рассмотрю UltraDataSource и посмотрю, смогу ли я что-нибудь придумать. Еще раз спасибо. Charles –

0

Можете ли вы сделать свойство на источнике связывания нулевым DateTime??