至少3種方式我能想到的,可以這樣做: -Telerik的網格自定義格式範圍
1日(理想) - 其中有大約8列一個Telerik的網格,第一個關口會列出下一個6的所有表格條目,用於顯示爲每個條目提交的不同日期,但並非每個條目都必須具有值,最後的col將鏈接到單獨頁面上的每個條目以允許通過日期選擇器提交新日期或將編輯。
主要問題是我需要能夠根據每個列以不同的顏色顯示網格上的每個日期,我的意思是我在每年更新的第一列中記錄一個日期,因此如果> 6個月然後是顏色1,> 1個月的顏色2,< 1個月的顏色3,最後如果過去1年,則標記顏色4.
另外還有兩種不同的續訂長度。
第二個 - 每個不同的更新長度都會得到自己的網格,所以第一個爲1y,第二個爲第二個長度,第三個爲第三個長度。
第3(有可能) - 4個網格來替換顏色,它將簡單地顯示每個類別,因此1個網格將顯示所有超過6個月的入口,2個網格顯示大於1個月,3個網格顯示少於1個月,網格4會顯示過去的時間長度。
我不知道如何最好地排序日期的方式,將做我所需要的,但我認爲選項1將是可能的或選項3是最簡單的。
編輯 -
using System
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace (...).Models.DTO
{
public class ...DTO
{
public int Id { get; set; }
public string Name { get; set; }
//public string C1D
//{
// get
// {
// if (C1D < DateTime.Today.AddDays(-183)) return "Green";
// }
//}
public string C1D
{
get
{
if ((C1D = DateTime.ParseExact(C1D, "yyyy/mm/dd", null)) < DateTime.Today.AddDays(-183)) return "Green";
}
set;
}
public string C2D { get; set; }
這說明我如何在兩種不同的方式和C2D試圖建立C1D如何我通常設置,其中進入Telerik的電網的cols。
[GridAction]
public ActionResult _List(int? Id)
{
List<...DTO> ret = new List<...DTO>();
_db.(...).ToList().ForEach(x =>
{
ret.Add(new ...DTO
{
Id = x.Id,
Name = x.(...)Name,
C1D = (x.C1SD.HasValue) ? x.C1SD.Value.ToShortDateString() : "",
C2D = (x.C2SD.HasValue) ? x.C2SD.Value.ToShortDateString() : "",
這是我將如何去設置它在控制器中顯示數據在電網中。
下面是如何設置我的觀點
<% Html.Telerik().Grid<(...).Models.DTO.(...)DTO>()
.Name("...List")
.DataKeys(dk => dk.Add(x => x.Id))
.Columns(c =>
{
c.Bound(x => x.Name);
c.Bound(x => x.C1D)
.Title("...");
c.Bound(x => x.C2D)
.Title("...");
c.Bound(x => x.C3D)
.Title("...");
c.Bound(x => x.C4D)
.Title("...");
c.Bound(x => x.C5D)
.Title("...");
c.Bound(x => x.C6D)
.Title("...");
c.Bound(x => x.C7D)
.Title("...");
})
.Sortable()
.Filterable()
.DataBinding(db => db.Ajax().Select("_List", "..."))
.Render();
%>
編輯2 - 我 也試過
.ClientEvents(e => e.OnDataBound("onDataBound"))
function onDataBound(e) {
if (e.dataItem.C1D > DateTime.Today.AddDays(183)) {
e.cell.style.backgroundColor = "green";
}
if (e.dataItem.C1D > DateTime.Today.AddDays(30)) {
e.cell.style.backgroundColor = "orange";
}
if (e.dataItem.C1D > DateTime.Today) {
e.cell.style.backgroundColor = "red";
}
if (e.dataItem.C1D <= DateTime.Today) {
e.cell.style.backgroundColor = "purple";
}
}
,並在到達這個頁面將打入代碼和說「Microsoft JScript運行時錯誤:'dataItem.C1D'爲空或不是對象」和「Microsoft JScript運行時錯誤:'cell.style'爲空或不是對象」,然後顯示頁面的機智h網格中的所有日期,以便這些項目不爲空,但是否有其他代碼/格式我應該用來執行此功能?
而且還看着http://demos.telerik.com/aspnet-mvc/grid/customformatting在問候.cellaction像下面
.CellAction(cell =>
{
if (cell.Column.Title == "Title Name")
{
if (cell.DataItem.C1D > DateTime.Today.AddDays(183))
{
//Set the background of this cell only
cell.HtmlAttributes["style"] = "background:red;";
}
}
})
,我不得不改變,請將.Name到.title僞因爲它不承認.name和,但我得到了錯誤味精「錯誤1運算符'>'不能應用於'string'和'System.DateTime'類型的操作數,所以我似乎無法在單元操作中執行這個複雜的任務。
我也張貼了這個在連接到另一個問題Telerik的論壇,但至今沒有答覆 http://www.telerik.com/community/forums/aspnet-mvc/grid/telerik-grid-row-custom-formatting-on-either-bit-int-string-field.aspx
編輯3 -
額外的控制器代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using (Database Name).Models;
using (Database Name).Models.DTO;
using Telerik.Web.Mvc;
using Telerik.Web.Mvc.UI;
namespace (Database Name).Controllers
{
public class (Controller Name)Controller : Controller
{
(Database Name)Entities _db = new (Database Name)Entities();
public ActionResult List()
{
return View();
}
這就是它現在有我可以提供任何東西,因爲沒有任何東西可以對電子網格產生任何影響,所以如果還有別的東西可能會隱藏在我可能會出現的其他地方那麼請解釋一下這可能是什麼,因爲我沒有包括的唯一東西就是用於創建和編輯頁面的代碼,但它們涉及到的只是製作每個簡單記錄,然後允許用戶更改記錄的日期。
想知道標題是否不夠準確,或者這太複雜了,難以快速解決問題 – Myzifer 2011-03-11 13:02:24