Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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/1/asp.net/32.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# 如何使用下拉列表动态排序列表框?_C#_Asp.net - Fatal编程技术网

C# 如何使用下拉列表动态排序列表框?

C# 如何使用下拉列表动态排序列表框?,c#,asp.net,C#,Asp.net,我有一个20种颜色的列表框。它看起来像这样: 1:红色 2:绿色 3:蓝色 4:橙色 5:红色 6:黄色 7:橙色 8:红色 9:绿色 它从ObjectDataSource获取数据,而ObjectDataSource又从返回datatable的方法获取数据。我想要一个基本上有两个项目的下拉列表,按#和按颜色排序。如果用户选择按#排序,它将按升序或降序排列列表框。如果用户选择按颜色订购,则将按颜色订购。我该怎么做呢 我可以使用DataView对其进行排序吗 谢谢, XaiSoft(我假设您首先已

我有一个20种颜色的列表框。它看起来像这样:

1:红色 2:绿色 3:蓝色 4:橙色 5:红色 6:黄色 7:橙色 8:红色 9:绿色

它从ObjectDataSource获取数据,而ObjectDataSource又从返回datatable的方法获取数据。我想要一个基本上有两个项目的下拉列表,按#和按颜色排序。如果用户选择按#排序,它将按升序或降序排列列表框。如果用户选择按颜色订购,则将按颜色订购。我该怎么做呢

我可以使用DataView对其进行排序吗

谢谢, XaiSoft

(我假设您首先已经知道如何绑定列表框。)

在DropdownList上设置属性AutoPostback=“true”。这将导致当用户选择不同的值时触发SelectedIndexChanged事件

在那里你可以重新绑定你的列表框



编辑:删除了我对ObjectDataSource的误解——乔什·佩里的回答涵盖了更多

您可以将排序表达式作为选择参数添加到ObjectDataSource中,您可以这样定义它:

    <asp:ObjectDataSource 
        ID="ObjectDataSource1" 
        runat="server" 
        SelectMethod="SelectMethod" 
        TypeName="MyDataObject">
            <asp:Parameter Direction="input" Type="string" Name="sortExpression">
            </asp:Parameter>
    </asp:ObjectDataSource>

然后在ObjectDataSource的向导中,可以将该参数绑定到下拉列表SelectedValue。使每个下拉项的值与列名相同。

只是想知道。。。列表框中已经有了数据,为什么不使用javascript对其进行排序呢?为了避免重蹈覆辙,请返回服务器并提出同样的要求

只要获得正确的列表框id,您就完成了

<script language="JavaScript" type="text/javascript">
  function sortlist() {
    var lb = document.getElementById('mylist'); // <-- Use $get(<%# myList.ClientID %>); if you want
    arrTexts = new Array();

    for(i=0; i<lb.length; i++)  {
      arrTexts[i] = lb.options[i].text;
    }

    arrTexts.sort();
    // arrTexts.reverse()  // <-- uncomment if you want descending

    for(i=0; i<lb.length; i++)  {
      lb.options[i].text = arrTexts[i];
      lb.options[i].value = arrTexts[i];
    }
  }
</script>


<select name="mylist" id="mylist" size="5">
  <option value="Anton">Anton</option>
  <option value="Mike">Mike</option>
  <option value="Peter">Peter</option>
  <option value="Bill">Bill</option>
  <option value="Carl">Carl</option>
</select>
<br />
<a href="javascript:sortlist();">sort</a>

函数sortlist(){

var lb=document.getElementById('mylist');//谢谢,我来试一试。您使用的语法是什么。是LINQ吗?这是LINQ,是的。请确保代码文件顶部有using System.LINQ;,否则它将无法编译。如果您使用的是较旧版本的.NET framework或较旧版本的Visual Studio,LINQ将不可用,在这种情况下,您需要使用另一种方法对列表进行排序。我将尝试使用JavaScript的方式对其进行排序,并让您知道它是如何进行的。谢谢!如果我有多个SortExpression,该怎么办。请查看DataView排序属性文档。您可以提供类似“Color ASC,Number DESC”的字符串按第一种颜色ASC排序,然后按数字DESC排序。我描述的方法之所以有效,是因为排序默认为ASC,所以如果只传递一个列名,它将按升序对该列进行排序。
<script language="JavaScript" type="text/javascript">
  function sortlist() {
    var lb = document.getElementById('mylist'); // <-- Use $get(<%# myList.ClientID %>); if you want
    arrTexts = new Array();

    for(i=0; i<lb.length; i++)  {
      arrTexts[i] = lb.options[i].text;
    }

    arrTexts.sort();
    // arrTexts.reverse()  // <-- uncomment if you want descending

    for(i=0; i<lb.length; i++)  {
      lb.options[i].text = arrTexts[i];
      lb.options[i].value = arrTexts[i];
    }
  }
</script>


<select name="mylist" id="mylist" size="5">
  <option value="Anton">Anton</option>
  <option value="Mike">Mike</option>
  <option value="Peter">Peter</option>
  <option value="Bill">Bill</option>
  <option value="Carl">Carl</option>
</select>
<br />
<a href="javascript:sortlist();">sort</a>