下拉列表绑定,自动选择项目/首先制作特定项目

时间:2012-03-07 09:27:21

标签: c# asp.net html drop-down-menu

我的国家页面上有一个下拉列表,这里是我的代码,我抓住了ddl id,并绑定了我的数据源:

DropDownList ddlSalary = (DropDownList)this.FindControl(MyControls.CountryDDL);
if (ddlSalary != null)
{
ddlSalary.DataSource = MyMethods.LoadCountries();
ddlSalary.DataValueField = "Value";
ddlSalary.DataTextField = "Text";
ddlSalary.DataBind();
}

我所写的国家是按字母顺序排列的。但是id就像将特定的一个移动到列表顶部的选项,或者可能是自动选择。示例“英国”是列表中的第一个 这样做最有效的方法是什么?

4 个答案:

答案 0 :(得分:2)

我认为这种逻辑更适合放在您的服务/模型提供者(MyMethods.LoadCountries();)中。

类似的东西:

public static List<Country> LoadOrderedCountries(){
     var orderedCounteries = MyMethods.LoadCountries(); 
     orderedCounteries .Sort(); // Just to make sure alphabetical order, assuming that Country implements IComparable
     var defaultCountry = Country.GetDefault();
     orderedCounteries .Remove(defaultCountry);
     orderedCounteries .Insert(0, defaultCountry);

     return orderedCounteries ;
}

答案 1 :(得分:0)

这是一个快速的&amp;用SQL做脏的方法。我更喜欢在数据库级别

  1. 我正在做的是首先在列表中选择您想要的项目
  2. 使用名称按升序排列列表中所需项目的联盟ALL,不包括我第一次查询中的项目

  3. 无论第二个查询是什么,结果都是第一个项目

      

    select * from((选择Empcode,Empname from。)   mySchema.Employees,其中EmpCode不在(90))UNION ALL

         

    从mySchema.Employeeswhere中选择EmpCode,EmpName   EmpCode =按EmpName的90顺序)为z

  4. 您还可以将pageLoad上选择的值设置为

  5.   

    ddlYourDropDownList.SelectedValue = “90”;

答案 2 :(得分:-1)

我通常在数据绑定事件中执行此操作

 DropDownList ddlSalary = (DropDownList)this.FindControl(MyControls.CountryDDL);
        if (ddlSalary != null)
        {
        ddlSalary.DataSource = MyMethods.LoadCountries();
        ddlSalary.DataValueField = "Value";
        ddlSalary.DataTextField = "Text";
        ddlSalary.DataBind();
        ddlSalary.DataBound += ddlSalary_DataBound;
        }
  protected void ddlSalary_DataBound(object sender, EventArgs e)
  {
      ListItem MovingItem =  ddlSalary.Items.FindByValue("yourvalue");
      ddlSalary.Items.Remove(MovingItem);
      ddlSalary.Items.Insert(0, MovingItem);
  }

编辑:此方法更适合添加&#34;其他&#34;类型选项,不是由您的数据源提供的。 Amby的解决方案比这更好。

答案 3 :(得分:-1)

对数据源进行数据绑定后,您只需对ListItems

进行排序即可

更好的方法是在数据源中进行排序(您没有提供有关从何处获取数据的足够信息)

private void SortDDL(ref DropDownList objDDL)
{
    ArrayList textList = new ArrayList();
    ArrayList valueList = new ArrayList();


    foreach (ListItem li in objDDL.Items)
    {
        textList.Add(li.Text);
    }    

    textList.Sort();


    foreach (object item in textList)
    {
        string value = objDDL.Items.FindByText(item.ToString()).Value;
        valueList.Add(value);
    }
    objDDL.Items.Clear();

    for(int i = 0; i < textList.Count; i++)
    {
        ListItem objItem = new ListItem(textList[i].ToString(), valueList[i].ToString());
        objDDL.Items.Add(objItem);
    }
 }