데이터 바인딩 드롭다운 목록 - 초기 값
ASP에서 데이터 바인딩 드롭다운 목록의 초기 값을 설정하려면 어떻게 해야 합니까?NET?
예를 들어, 값을 원하지만 첫 번째로 표시할 값은 --Select One ---이고 null 값을 사용해야 합니다.
당신이 원하는 것은 다음과 같습니다.
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
데이터를 바인딩할 때 'AdpendDataBoundItems'가 true로 설정되어 있는지 확인하십시오. 그렇지 않으면 '--Select One--' 목록 항목을 지웁니다.
드롭다운 목록의 'AutoPostBack' 속성이 true로 설정된 경우 'CauseValidation' 속성도 true로 설정한 다음 'RequiredFieldValidator'를 사용하여 '--Select One--' 옵션이 포스트백을 유발하지 않는지 확인해야 합니다.
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>
이것이 오래된 것이라는 것은 알지만, 이러한 아이디어의 조합은 매우 우아한 해결책으로 이어집니다.
DropDownList에 대한 모든 기본 속성 설정을 유지합니다(AdpendDataBoundItems=false, Items 비어 있음).그런 다음 DataBound 이벤트를 다음과 같이 처리합니다.
protected void dropdown_DataBound(object sender, EventArgs e)
{
DropDownList list = sender as DropDownList;
if (list != null)
list.Items.Insert(0, "--Select One--");
}
이 핸들러 하나를 DropDownList 개체 수에 관계없이 공유할 수 있고, 모든 프로젝트를 위한 범용 유틸리티 라이브러리에 넣을 수 있다는 것이 금상첨화입니다.
제가 하는 일은 데이터를 바인딩한 후 드롭다운 목록의 텍스트 속성을 설정하는 것입니다.이와 같은 것:
protected void LoadPersonComboBox()
{
var p = new PeopleBLL();
rcmbboxEditPerson.DataSource = p.GetPeople();
rcmbboxEditPerson.DataBind();
rcmbboxEditPerson.Text = "Please select an existing person to edit...";
}
이렇게 하면 이 드롭다운의 초기 표시 값이 표시되지만 실제로는 드롭다운의 일부가 아니며 선택할 수도 없습니다.
저는 이것이 이미 선택된 답을 가지고 있다는 것을 압니다. 하지만 저는 제 2센트를 주고 싶었습니다.데이터 바인딩 드롭다운 목록이 있습니다.
<asp:DropDownList
id="country"
runat="server"
CssClass="selectOne"
DataSourceID="country_code"
DataTextField="Name"
DataValueField="CountryCode_PK"
></asp:DropDownList>
<asp:SqlDataSource
id="country_code"
runat="server"
ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
SelectCommand="SELECT CountryCode_PK, CountryCode_PK + ' - ' + Name AS N'Name' FROM TBL_Country ORDER BY CountryCode_PK"
></asp:SqlDataSource>
뒤에 있는 코드에는 다음과 같은 내용이 있습니다. (기본적으로 미국을 선택합니다.
if (this.IsPostBack)
{
//handle posted data
}
else
{
country.SelectedValue = "US";
}
페이지는 선택한 내용에 대해 걱정하지 않고 'US' 값을 기준으로 처음 로드됩니다.색인(데이터 테이블에 다른 항목이 추가되면 어떻게 됩니까? - 다시 코드화할 필요가 없습니다.)
드롭다운에서 값을 선택하려면 다음과 같은 인덱스를 사용합니다.
만약 우리가 가지고 있다면
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
다음을 사용할 수 있습니다.
DropDownList1.Items[DropDownList1.SelectedIndex].Value
그러면 선택한 인덱스의 값이 반환됩니다.
안녕 친구야, 이 경우에 너는 그것을 사용할 수 있어요.
AppendDataBound="true"
목록 항목을 사용합니다.예:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
그러나 문제는 두 번째 선택 데이터가 이전 데이터와 함께 추가된다는 것입니다.
항목을 추가하고 "선택한" 속성을 true로 설정하면 데이터 바인딩 시 초기 값이 삭제되지 않도록 "데이터 바인딩 항목 추가" 속성도 true로 설정할 수 있습니다.
데이터 바인딩 항목에 포함된 초기 값을 설정하는 것에 대해 이야기하는 경우, ondatabound 이벤트에 연결하여 선택할 인덱스를 설정합니다.=true를 설정하면 "page.isPostBack이 아닌 경우..."로 묶고 싶을 것입니다.
Protected Sub DepartmentDropDownList_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DepartmentDropDownList.DataBound
If Not Page.IsPostBack Then
DepartmentDropDownList.SelectedValue = "somevalue"
End If
End Sub
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");
언급URL : https://stackoverflow.com/questions/521334/databound-drop-down-list-initial-value
'programing' 카테고리의 다른 글
어셈블리의 net standard, Version=2.0.0.0에 대한 참조를 추가해야 합니다. (0) | 2023.05.12 |
---|---|
VBA를 사용하여 프로그래밍 방식으로 참조를 추가하는 방법 (0) | 2023.05.12 |
HTML5 비디오 클라이언트에 대한 실시간 http 스트리밍에 대한 최상의 접근 방식 (0) | 2023.05.12 |
EscapeUriString과 EscapeDataString의 차이점은 무엇입니까? (0) | 2023.05.12 |
대부분의 포트에서 수신 중인 경우 Node.js EACCES 오류 (0) | 2023.05.12 |