[英]Sorting a ListView using an ObjectDataSource with a LinkButton and ViewState
[英]Sorting a ListBox bound to an ObjectDataSource using a dropdown with 2 selections
我在使用下拉列表對列表框進行排序時遇到問題。 下拉菜單將有2個選項:
排序方式 #
按類型排序
ListBox包含一個項目列表,這些項目最初由#升序排列。 它具有以下格式:
如果用戶選擇“按#排序”,則如果已經按升序排序,則應按降序排序;如果已經按降序排序,則應按升序排序。 如果用戶選擇“按類型排序”,則應該對顏色進行排序,然后按#排序,因此上面的列表將變為:
lisbox是從ObjectDataSource獲取其數據的,其定義如下:
<asp:ObjectDataSource ID="odsColors" runat="server" SelectMethod="GetColors"
TypeName="XaiSoft.Data">
</asp:ObjectDataSource>
我已經存根了一種排序方法,但是這就是我所堅持的方法,我不確定該怎么做:
public void SortColorList()
{
}
我更新了上述方法以顯示要執行的操作,但是出現以下錯誤:
DataSource和DataSourceID均在“ lstColors”上定義。 刪除一個定義。
protected void SortColorList()
{
XaiSoft.Data.Colors c = new XaiSoft.Data.Colors();
DataTable dt = c.GetColorList();
DataView dv = new DataView(dt);
dv.Sort = "[" + dv.Table.Columns["ColorName"].ColumnName + "] asc";
lstAuctions.DataSource = dv; //Error happens here.
lstAuctions.DataBind();
}
我通過設置DataSourceId = string.empty來解決該錯誤。
感謝您的幫助,XaiSoft
創建一個自定義比較(實現IComparable的)描述在這里和使用到您的收藏適當排序。 該文章中還列出了其他替代方法(例如使用Linq)。
您提到了lstAuctions(ListBox)的數據源是odsColors ObjectDataSource,可能是在控件的屬性上設置的(在設計時)。 在后面的代碼中,將lstAuctions綁定到dv(DataView)。 這似乎可以解釋該錯誤:“ DataSource和DataSourceID都在'lstColors'上定義。刪除一個定義。” 但是,我在您的代碼中看不到“ lstColors”控件。 該問題可能是由頁面上的其他內容引起的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.