2012-05-23 55 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