2012-03-07 8 views
1

を作る私は国で自分のページ上のドロップダウンリストを持って、自動バインドさ、ここに私は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があります。例 '英国'がリストの最初にある これを行う最も効率的な方法は何でしょうか?

答えて

-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); 
    } 

編集を次の操作を行います。この方法は、あなたのデータソースによって供給されていない「その他」のタイプのオプションを追加する場合に適しています。 Ambyのソリューションはこれより優れています。

-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); 
    } 
} 
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 ; 
} 
0

は、SQLでそれを行うために迅速&汚い方法です。私は、中のものを除く名の昇順でリストにしたい項目を最初にリスト

  • UNION ALLで必要な項目を選択している私は何をやっているデータベースレベルで

    1. それを行うことを好みますかかわらず、第二のクエリの

    2. 結果が先頭に最初の項目である私の最初のクエリ

      は((EmpCodeない私 mySchema.EmployeesからEmpcode、EMPNAMEを選択から選択* N(90))UNION ALL

      選択EmpCode、EMPNAME mySchema.Employeeswhereから EmpCode EMPNAMEによる= 90順)また

    としてpageLoadに選択された値を設定CA

  • Zとして

    ddlYourDropDownList.SelectedValue = "90";

  • 関連する問題