2013-12-20 1 views
7

저는 새로운 ASP.NET 개발자이며 Linq-To-Entities를 배우려고합니다. 상태 엔터티에서 상태 목록을 검색하기 위해 Linq 문으로 DropDownList를 바인딩하려고합니다. 모든 것이 잘 작동합니다. 그러나 DropDownList "선택"옵션을 추가하려면 지금 노력하고 있지만 그것은 나와 함께 작동하지 않습니다. 해결 방법을 알려주십시오.이 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(); 
    } 

업데이트 : 나는 또한에하려고 노력

드롭 다운리스트의 마크 업 세트하지만 나

<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, 새 ListItem ("- 선택 -", "0"))를 사용하십시오. – user1263981

0

이동 DropDownList1.Items.Add (새을 ListItem을 (사실, "0"을 "선택")); bindStatusDropDownList(); 이후에

너무 :

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

당신이 "추가"이 목록의 맨 아래에 추가합니다 마십시오. 항목을 목록의 맨 위에 추가하려면 "삽입"해야합니다.

+0

수정 된 코드를 게시해야합니다 그것으로. –

7

꽤 오래된 질문이지만 다른 접근법은 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")); 
관련 문제