programing

데이터 바인딩 드롭다운 목록 - 초기 값

starjava 2023. 5. 12. 20:09
반응형

데이터 바인딩 드롭다운 목록 - 초기 값

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

반응형