我如何拆分" DateTime"数据库中的列,具有格式
yyyy-mm-dd 00:00:00.000
,分为RadGrid的两个独立列?
即,日期应显示在数据库的DateTime列中。
在RadGrid的 Time 列中,Time应显示在数据库DateTime列中。
答案 0 :(得分:3)
您可以将 very 相同的字段绑定到两个不同的绑定列(或者您使用的任何列类型)。
<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建议的更新
在将代码显示到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 = "";
}
}
}