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.
Надеюсь это поможет!