在Asp.Net动态数据应用程序中使用DisplayColumnAttribute按多个字段排序?
我有一个动态数据应用程序,我想根据多个字段进行排序,比如在Asp.Net动态数据应用程序中使用DisplayColumnAttribute按多个字段排序?,asp.net,dynamic-data,Asp.net,Dynamic Data,我有一个动态数据应用程序,我想根据多个字段进行排序,比如 <DisplayColumn("FieldName", "Field1, Field2")> _ } _ DisplayColumn似乎不支持多个字段?如果要在多个列上对gridview进行排序,则可以这样做- } 在页面模板中\List.aspx.cs&在页面中检查表名的事件 } 如果(!Page.IsPostBack) { 如果(table.Name==“项目”) { } GridView1.Sort(“Cli
<DisplayColumn("FieldName", "Field1, Field2")> _
}
_
DisplayColumn似乎不支持多个字段?如果要在多个列上对gridview进行排序,则可以这样做-
}
在页面模板中\List.aspx.cs&在页面中检查表名的事件
}
如果(!Page.IsPostBack)
{如果(table.Name==“项目”)
{
}
GridView1.Sort(“ClientDetail.CompanyName asc,ProjectName asc”,SortDirection.升序)
}
}
}
您还可以为每个列提供升序或降序。DisplayColumn属性的SortColumn参数指定当该实体用作外键(例如:在DropDownList中)时,而不是在GridView中排序(或在DB中排序)时,用于对该实体进行排序的列
}
请参见此处:
}
msdn:
}
如果这仍然是您要查找的内容(仅在DropDownList中排序,而不是在DB中排序),则可以通过在组合这两列的实体中创建自定义属性对多个列进行排序
}
例如:
}
[DisplayColumn("FieldName", "SortColumn")]
public partial class Employee
{
public string SortColumn
{
get { return Field1 + Field2; }
}
}
是的,它支持多字段。您可以尝试以下操作:
}
[DisplayColumn("FieldName", "Field1 ASC, Field2 DESC, Field3")]
然后在列表.aspx的页面加载:
}
var displayColumn = table.GetAttribute<DisplayColumnAttribute>();
if (displayColumn != null && displayColumn.SortColumn != null)
{
GridView1.Sort(displayColumn.SortColumn,
displayColumn.SortDescending ? SortDirection.Descending : SortDirection.Ascending);
}
var displayColumn=table.GetAttribute();
if(displayColumn!=null&&displayColumn.SortColumn!=null)
{
GridView1.Sort(displayColumn.SortColumn,
displayColumn.SortDescending?SortDirection.Descending:SortDirection.Suscending);
}
当然,如果您手动排序,这将起作用,但它通常会弄乱动态数据,并导致尝试自动排序时出现黄色屏幕,因此这不是一个好主意。@Aaronaught,有什么更好的方法吗?Aaron的答案在性能不受影响的情况下有效。否则,我将使用一个计算列,可以在服务器上编制索引。这是一个好主意如果DD只是将您选择的任何字符串按
的顺序链接到一个中就好了,但不幸的是,它并不是这样做的,并且使这项工作最终比仅仅通过合成一个列在框架内工作更麻烦。