将 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 = "";
}
}
}
如何从数据库中拆分 "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 = "";
}
}
}