드롭 다운에 빈 항목이 먼저 표시되지 않는 이유는 무엇입니까? 여기 내가 가진 것입니다
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 또는
답변
더 나은 방법은 빈 항목을 먼저 삽입 한 다음 수행 한 것처럼 데이터를 바인딩하는 것입니다. 그러나 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)
답변
빈 항목을 추가 한 다음 데이터 바인딩을 사용하여 목록을 비우는 것처럼 보입니다. 데이터 바인딩 후 빈 항목을 삽입하십시오