2015-07-13 32 views
2

在Telerik的ASP.NET Ajax的:垂直堆疊時間範圍過濾器Telerik的GridDateTimeColumn

GridDateTimeColumn c = new GridDateTimeColumn(); 
c.EnableRangeFiltering = true; 

這增加了與日期範圍過濾器 「來自:」 和 「To:」 日曆控制輸入。這些控件是水平對齊的:

From: _____ [CAL] To: ____ [CAL] [FILTER] 

是否有某種方法可以垂直堆疊控件?如:

From: ______ [CAL] 
TO: ______ [CAL] [FILTER] 

當前,水平內嵌對齊會顯着增加列寬度並影響用戶對網格的體驗。

回答

2

哈克解決方案的一點,但仍然是一種解決方案......

protected void rgMyGrid_ItemCreated(object sender, GridItemEventArgs e) 
{ 
    var fi = e.Item as GridFilteringItem; 
    if (fi == null) return; 
    var litTo = fi["DateCol"].Controls[3] as LiteralControl; 
    if (litTo != null) litTo.Text = "<br /><span style=\"padding-right:17px\">To:</span>"; 
} 

你顯然需要一個OnItemCreated事件處理程序添加到您的網格定義。

DateCol是你GridDateTimeColumn

+0

感謝您的建議,但它並不適合我,因爲我不知道我所有列的名稱(例如'fi [「DateCol」]')。任何方式來破解你的黑客只是將其應用於所有有日期範圍過濾器的列? – Adam

2

的UniqueName事先不知道你GridDateTimeColumns的UniqueName,下面的非常哈克代碼應該做的伎倆:)

protected void rgMyGrid_ItemCreated(object sender, GridItemEventArgs e) 
{ 
    var fi = e.Item as GridFilteringItem; 
    if (fi == null) return; 

    foreach (var litTo in from Control c in fi.Controls where c.Controls.Count == 6 select (LiteralControl) c.Controls[3]) 
      litTo.Text = "<br /><span style=\"padding-right:17px\">To:</span>";   
} 

這裏的關鍵是知道有是構成範圍過濾控制集合的6個控件。