2013-12-20 6 views
7

私は新しいASP.NET開発者です。私はLinq-To-Entitiesを学ぼうとしています。ステータスエンティティのステータスリストを取得するために、DropDownListをLinqステートメントでバインドしようとしています。すべてがうまくいきます。しかし、私はDropDownListに "Select"オプションを追加しようとしていますが、それは私とはうまく動作しません。 これを修正する方法を教えてください。このASP.NET DropDownListコントロールにデフォルトの "選択"オプションを追加する方法はありますか?

ASP.NETコード:コードビハインド

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
       OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      DropDownList1.Items.Add(new ListItem("Select", "0", true)); 
      bindStatusDropDownList(); 
     } 
    } 

private void bindStatusDropDownList() 
    { 
     Status status = new Status(); 
     DropDownList1.DataSource = status.getData(); 
     DropDownList1.DataValueField = "ID"; 
     DropDownList1.DataTextField = "Description"; 
     DropDownList1.DataBind(); 
    } 

UPDATE:私もで実行しようとしました

マークアップのDropDownListのセットが、それは私と一緒に、あまりにも動作しませんでした

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
       OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
        <asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem> 
      </asp:DropDownList> 

答えて

18

リストに項目を追加し、クリアされた新しいDataSourceでリスト全体を上書きしているので、それが機能していない理由であり、最初に手動で追加したアイテムを失い、リストを再投入します。

だから、あなたはこのような逆にこれを実行する必要があります。

Status status = new Status(); 
DropDownList1.DataSource = status.getData(); 
DropDownList1.DataValueField = "ID"; 
DropDownList1.DataTextField = "Description"; 
DropDownList1.DataBind(); 

// Then add your first item 
DropDownList1.Items.Insert(0, "Select"); 
+0

あなたの助けと明確な説明をありがとう。それは今私と一緒に働く。私は本当にあなたの助けに感謝します。 – user3107976

+0

問題ないです。私は助けてくれてうれしいです。 – Belogix

+3

ドロップダウンコントロールをバインドした後に値とテキストの新しい項目を挿入する場合は、ddlClientGroup.Items.Insert(0、New ListItem( " - Choose - "、 "0"))を使用します。 – user1263981

0

移動DropDownList1.Items.Add(新しいリストアイテム( "選択"、 "0"、真)); bindStatusDropDownList()の後に。

ので:

if (!IsPostBack) 
    { 
     bindStatusDropDownList(); //first create structure 
     DropDownList1.Items.Add(new ListItem("Select", "0", true)); // after add item 
    } 
0

あなたは、「追加」、それはリストの一番下に追加されますならば。アイテムをリストの先頭に追加する場合は、「挿入」を行う必要があります。

+0

修正されたコードそれと。 –

7

かなり古い質問ですが、もう1つの方法は変更することですAppendDataBoundItemsプロパティ。だから、コードは次のようになります。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
        OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" 
        AppendDataBoundItems="True"> 
    <asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem> 
</asp:DropDownList> 
+1

私はこれをより良い、よりクリーンなソリューションと思います:-) – Keltanis

+0

ツールボックス用です。 – Resource

0
Private Sub YourWebPage_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete 

    If Not IsPostBack Then 
    DropDownList1.Items.Insert(0, "Select") 
    End If 

End Sub 
1

私は、コードを次のように試してみました。それは私のためにうまくいっている

ManageOrder Order = new ManageOrder(); 
Organization.DataSource = Order.getAllOrganization(Session["userID"].ToString()); 
Organization.DataValueField = "OrganisationID"; 
Organization.DataTextField = "OrganisationName";     
Organization.DataBind();     
Organization.Items.Insert(0, new ListItem("Select Organisation", "0"));