将 DateTime 列从数据库中分离到 RadGrid 的两个单独的列中

Separate DateTime column from Database into two separate columns of RadGrid

如何从数据库中拆分 "DateTime" 列,格式如下 yyyy-mm-dd 00:00:00.000,分成两个单独的 RadGrid 列?

即 RadGrid 的 Date 列中的 ,Date 应该从数据库 DateTime 列中显示。
并且在 RadGrid 的 Time 列中,时间应该从数据库 DateTime 列显示。

您可以将 非常 相同的字段绑定到两个不同的绑定列(或您使用的任何列类型)。

<telerik:GridBoundColumn 
   DataField="YourDateField" 
   UniqueName="CDate"
   HeaderText="Date" 
   DataType="System.DateTime" DataFormatString="{0:yyyy-MM-dd}">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn 
   DataField="YourDateField" 
   UniqueName="CTime" 
   HeaderText="Time" 
   DataType="System.DateTime" DataFormatString="{0:HH:mm:ss}">
</telerik:GridBoundColumn>

编辑: 我认为使用 IEnumerable<T> 是解决许多问题的最佳方法,包括数据格式化和检查空字段。

public class MyModel
{
  public string UpdateDate {get;set;}
  public string UpdateTime {get;set;}
 //and add other properties which you need to be a part of grid
}

编写代码以填充网格将使用的 IEnumerable<MyModel> 数据源。

var list = new List<MyModel>();

// Read one by one row/result from database and set value to 
// an instance of MyModel

/* read/fetch row from database */
.....
var dbRow = /* fetch a row */
var model = new MyModel{ UpdateTime = "", UpdateDate=""};
if( dbRow.UpdateDateTime !=null ) 
 {
   model.UpdateDate = dbRow.UpdateDateTime.ToString("yyyy-MM-dd");
   model.UpdateTime = dbRow.UpdateDateTime.ToString("HH:mm:ss");
 }
list.Add( model );
...
...

最后将 list 数据源绑定到您的 Grid 控件。

SO 线程 - How Handle Null Values(In Columns) In Telerik RadGrid?

OP

建议的更新

在将 null/default 值显示到 RadGrid 之前,下面的代码也可以正常检查 null/default 值:

protected void GridReport_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem item = (GridDataItem)e.Item;

            if (item["ScanDate"].Text == "01/01/1900")
            {
                item["ScanDate"].Text = "";
            }

            if(item["ScanTime"].Text == "00:00:00 AM")
            {
                item["ScanTime"].Text = "";
            }
        }
   }