[asp.net] Asp.net-드롭 다운 목록 맨 위에 빈 항목 추가

드롭 다운에 빈 항목이 먼저 표시되지 않는 이유는 무엇입니까? 여기 내가 가진 것입니다

drpList.Items.Add(New ListItem("", ""))

With drpList
    .DataSource = myController.GetList(userid)
    .DataTextField = "Name"
    .DataValueField = "ID"
    .DataBind()
End With

편집 ~ 나는 Generig List에 바인딩하고 있는데 이것이 범인이 될 수 있습니까?



답변

데이터 바인드 후 :

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;


답변

다음 AppendDataBoundItems=true을 쉽게 추가 하는 데 사용할 수 있습니다.

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
    <asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>


답변

데이터 바인딩은 빈 목록 항목을 추가 한 후에 발생하며 이미 존재하는 항목을 대체하므로 컨트롤러에서 목록의 시작 부분에 빈 항목을 추가하거나 데이터 바인딩 후 추가해야합니다.

편집하다:

ASP.Net 2.0에서 이것을 빠르게 검색 한 후에는 데이터 바인딩 된 항목을 추가하도록 설정할 수있는 “AppendDataBoundItems”true 속성이 있습니다.

자세한 내용은

http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=281 또는

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx


답변

더 나은 방법은 빈 항목을 먼저 삽입 한 다음 수행 한 것처럼 데이터를 바인딩하는 것입니다. 그러나 AppendDataBoundItems목록 컨트롤 의 속성 을 설정해야합니다 .

다음 방법을 사용하여 모든 데이터 소스를 목록 컨트롤에 바인딩합니다.

public static void BindList(ListControl list, IEnumerable datasource, string valueName, string textName)
{
    list.Items.Clear();
    list.Items.Add("", "");
    list.AppendDataBoundItems = true;
    list.DataValueField = valueName;
    list.DataTextField = textName;
    list.DataSource = datasource;
    list.DataBind();
}


답변

“Whisk”Said처럼 트릭은 “AppendDataBoundItems”속성에 있습니다.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.AppendDataBoundItems = true;
        DropDownList1.Items.Insert(0, new ListItem(String.Empty, String.Empty));
        DropDownList1.SelectedIndex = 0;
    }
}

감사합니다 “Whisk”


답변

데이터 바인딩을 수행 한 후 다음을 추가하십시오.

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)


답변

빈 항목을 추가 한 다음 데이터 바인딩을 사용하여 목록을 비우는 것처럼 보입니다. 데이터 바인딩 후 빈 항목을 삽입하십시오