2012-05-23 81 views
1

我的每個列都是複雜類型。將JQGrid綁定到複雜類型

使用自定義格式我希望能夠顯示一個屬性的文本,然後根據其他屬性對單元格進行着色(或者真的做任何事情)。

因此,例如:

public class MyRowObject 
{ 
    public MyCellObject Cell1 { get; set; } 
    public MyCellObject Cell2 { get; set; } 
    public SomeOtherCellObject Cell3 { get; set; } 

} 

public class MyCellObject 
{ 
    public string MyDisplayText { get; set; } 
    public int MyNumber { get; set; } 
} 

然後使用自定義格式javascript函數做的東西,例如:

function formatCourseData(cellValue, options, rowObject) { 

    var linkHTML = cellValue.MyDisplayText; 
    if (cellValue.MyNumber > 10) { 

     //format the html in some way 

    } 

    return linkHTML; 
} 

現在我知道我不能這樣做cellValue.MyDisplayText但這種或類似的東西是我希望能夠做到的。

這可能嗎?

它是否記錄在任何地方? (我看過,但找不到任何東西)。

在此先感謝。

回答

1

您可以做的是將複雜對象的每個字段作爲自己的列傳遞,然後在格式化程序中使用格式化程序的rowObject參數訪問其他值以執行所需的任何操作,例如着色。

或者,如果每個數字表示相同的顯示文字,則可能不需要使用第二列。您可以使用選擇格式化程序(或其自定義版本)或查找表等。

無論如何,這裏是你如何使用rowObject訪問行數據爲例:access-row-data-in-jqgrid-custom-formatter

這是否幫助?

+0

謝謝賈斯汀。是的,基本上我的子對象變平了,隱藏了我不想顯示的那些對象。我寧願不這樣做,因爲它似乎有點混亂,但感謝您的建議。你使用過JQGrid嗎?你是說沒有原生的方式去做我想找的東西? – ozz

+0

我已經廣泛使用了JavaScript jqGrid,但根本沒有使用Asp.NET版本。這就是說,如果你看一下Trirand的例子http://www.trirand.net/demoaspnetmvc.aspx - 在'Functionality' | 'Cell Formatters/Templates(custom)',所有的自定義格式化程序都是用JavaScript編寫的。 –

+0

我已經使用自定義格式化程序,我很熟悉這些,所以這不是問題。我可以很輕鬆地做你的建議,但它似乎是JQGrid的限制,我希望能找到一個更好的解決方案。它不能很好地擴展你想要定製的更多屬性。再次感謝! – ozz