Ultrawingrid - как отобразить #1/1/1800# как пустое (как если бы ноль)

Ultrawingrid 9.2 VS2008 .net 3.5

Мой 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

Руководство высоко ценится

2 ответа

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

У вас есть UltraDataSource, поддерживающий вашу сетку? Если это так, то e.Row.ListObject должен быть UltraDataRow, соответствующим строке сетки.

Я часто сохраняю ссылку на бизнес-объект в свойстве Tag в 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.

Надеюсь это поможет!

Другие вопросы по тегам