我最近一直在尝试“排序”GridView排序问题,我有点成功地做到了这一点,但并非GridView中的所有列都是“可排序的”,也就是说,即显示来自不同表的值的列。 更具体地说,假设我有两个表:列类别为Category的类别,categoryName和包含productsID,categoryID(外键),productName列的产品。
My Products.aspx看起来像:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AllowSorting="true" DataKeyNames="productsID" SelectMethod="GridView1_GetData">
<Columns>
<asp:BoundField DataField="productsID" SortExpression="productsID" HeaderText="Product ID" ReadOnly="true" />
<asp:BoundField DataField="productName" SortExpression="productName" HeaderText="Name of the product" />
<asp:TemplateField SortExpression="Categories.categoryName" HeaderText="Name of category" >
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Eval("Categories.categoryName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
和Products.aspx.cs看起来像:
DatabaseEntities db = new DatabaseEntities();
public IQueryable GridView1_GetData(string sortByExpression)
{
return db.Products.Include("Categories").SortBy(sortByExpression).AsQueryable();
}
排序适用于父(Products)表中的productsID,productsName和categoryID列,但不适用于同一GridView中显示的子(Categories)表列中的categoryName。
请问如何解决此排序问题?
提前致谢,问候