将DateTime列与Database分隔为两个单独的RadGrid列

时间:2015-08-17 03:15:28

标签: c# asp.net webforms telerik radgrid

我如何拆分" DateTime"数据库中的列,具有格式 yyyy-mm-dd 00:00:00.000,分为RadGrid的两个独立列?

RadGrid的日期列中的

,日期应显示在数据库的DateTime列中。
在RadGrid的 Time 列中,Time应显示在数据库DateTime列中。

1 个答案:

答案 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 = "";
            }
        }
   }