我正在使用jqGrid,我的后端是asp.net-mvc。我想弄清楚我是否可以使用不同的值来读取和写入后端的属性。
这里的背景是我的服务器端排序是通用的,并且通过获取我的 jqGrid 中传递的列名称来工作,并看起来按我的集合的对象的该属性进行排序。这很好用,除了一种情况
假设我有一个显示人员数据的网格。我在服务器上有一组 Person 对象。假设我有一个显示 personName 的列。
在客户端 colModel 我将 colModel的Name 和 Index 属性设置为“PersonName”。
在服务器端,我的 person 对象有一个 PersonName 属性,所以当我过滤或排序时,它使用 C# 反射按该属性进行排序和过滤。
问题是,如果我想编辑该属性并且编辑是一个选择下拉列表,其中 Id 是 PersonId,文本是 PersonName,当我保存时,我希望它将 Id 保存为“PersonId”属性(而不是 PersonName”财产)
我目前的解决方案(感觉很hacky)是在网格中有两列,
这是一个示例(简化以说明这一点):
{ name: "PersonName", index: "PersonName", width: 78, editable: false },
{ name: "PersonId", index: "PersonId", width: 78, editable: true, hidden: true, editrules: { edithidden: true, required: true} },
一个可见并用于排序和过滤但不可编辑(名称和索引是 PersonName),因此它不会显示在编辑对话框中。
隐藏的第二列 (hidden:true) 但具有 edithidden:true 因此它确实显示在编辑对话框中并用于写入值(这将是 PersonId)属性。
这可行,但我想看看是否有更优雅的方法来解决这个问题,除了有两个不同的列真正代表一个数据。