Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用带有2个选项的下拉列表对绑定到ObjectDataSource的列表框进行排序_C#_Asp.net - Fatal编程技术网

C# 使用带有2个选项的下拉列表对绑定到ObjectDataSource的列表框进行排序

C# 使用带有2个选项的下拉列表对绑定到ObjectDataSource的列表框进行排序,c#,asp.net,C#,Asp.net,我有一个问题排序列表框与下拉列表。下拉列表将有两个选项: 排序# 按类型排序 列表框包含一个项目列表,这些项目最初按#升序排列。其格式如下: 1:红色 2:绿色 3:蓝色 4:红色 5:红色 如果用户选择按#排序,则如果已按升序排序,则应按降序排序;如果已按降序排序,则应按升序排序。如果用户选择按类型排序,则应按颜色排序,然后按#,因此上面的列表变为: 1:红色 4:红色 5:红色 2:绿色 3:蓝色 lisbox从ObjectDataSource获取数据,ObjectDataSource定义如

我有一个问题排序列表框与下拉列表。下拉列表将有两个选项:

  • 排序#

  • 按类型排序

  • 列表框包含一个项目列表,这些项目最初按#升序排列。其格式如下:

  • 1:红色
  • 2:绿色
  • 3:蓝色
  • 4:红色
  • 5:红色
  • 如果用户选择按#排序,则如果已按升序排序,则应按降序排序;如果已按降序排序,则应按升序排序。如果用户选择按类型排序,则应按颜色排序,然后按#,因此上面的列表变为:

  • 1:红色
  • 4:红色
  • 5:红色
  • 2:绿色
  • 3:蓝色
  • lisbox从ObjectDataSource获取数据,ObjectDataSource定义如下:

    <asp:ObjectDataSource ID="odsColors" runat="server" SelectMethod="GetColors"
            TypeName="XaiSoft.Data">  
    </asp:ObjectDataSource>
    
    我更新了上述方法以显示我的目的,但我得到以下错误:

    DataSource和DataSourceID都是在“lstColor”上定义的。删除一个定义

    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,可能是在控件的属性上设置的(在设计时)。在代码隐藏中,您将LST绑定到dv(数据视图)。这似乎可以解释错误:“DataSource和DataSourceID都是在'lstColors'上定义的。删除一个定义。”但是,我在代码中没有看到'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();