IT Share you

드롭 다운 목록에 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까?

shareyou 2020. 12. 14. 21:05
반응형

드롭 다운 목록에 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까?


사용자가 새 페이지로 이동할 때이 ddl의 선택된 인덱스는 쿠키에 의해 결정되지만 ddl에 해당 쿠키의 값이 포함되어 있지 않은 경우 0으로 설정하고 싶습니다. ddl? 루프가 가장 좋은 방법입니까, 아니면 간단히 수행 할 수있는 if 문이 있습니까?

이것은 내가 시도한 것이지만 bool을 반환하지 않습니다.

if ( !ddlCustomerNumber.Items.FindByText( GetCustomerNumberCookie().ToString() ) )
    ddlCustomerNumber.SelectedIndex = 0;

떠오르는 두 가지 방법이 있습니다.

다음과 같이 포함을 사용할 수 있습니다.

if (ddlCustomerNumber.Items.Contains(new 
    ListItem(GetCustomerNumberCookie().ToString())))
{
    // ... code here
}

또는 현재 전략 수정 :

if (ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString()) != null)
{
    // ... code here
}

편집 : DropDownList.Items.FindByValueFindByText와 동일한 방식으로 작동하는 방법도 있지만 대신 값을 기반으로 검색합니다.


그러면 항목이 반환됩니다. 간단히 변경 :

if (ddlCustomerNumber.Items.FindByText( GetCustomerNumberCookie().ToString()) != null)
    ddlCustomerNumber.SelectedIndex = 0;

0이 기본값 인 경우 간단한 할당을 사용할 수 있습니다.

ddlCustomerNumber.SelectedValue = GetCustomerNumberCookie().ToString();

DDL에 쿠키 값이 포함 된 경우 적절한 목록 항목이 자동으로 선택됩니다. 포함되지 않은 경우이 호출은 선택을 변경하지 않으므로 기본 선택으로 유지됩니다. 후자의 값이 0과 같으면 완벽한 솔루션입니다.

저는이 메커니즘을 아주 많이 사용하며 매우 편리합니다.


이것에 대해 :

ListItem match = ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString());
if (match == null)
    ddlCustomerNumber.SelectedIndex = 0;
//else
//    match.Selected = true; // you'll probably select that cookie value

C #에서는 다음과 같이 작동합니다.

        if (DDLAlmacen.Items.Count > 0)
        {
            if (DDLAlmacen.Items.FindByValue("AlmacenDefectoAndes").Value == "AlmacenDefectoAndes")
            {
                DDLAlmacen.SelectedValue = "AlmacenDefectoAndes";
            }
        }

최신 정보:

위 코드를 Visual Basic으로 변환하면 작동하지 않습니다. "System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다."가 발생합니다.

그래서. 이것이 Visual Basic에서 작동하려면 다음과 같이 코드를 변경해야했습니다.

        If DDLAlmacen.Items.Count > 0 Then
            If DDLAlmacen.Items.Contains(New ListItem("AlmacenDefectoAndes")) Then
                DDLAlmacen.SelectedValue = "AlmacenDefectoAndes"
            End If
        End If

ListItem item = ddlComputedliat1.Items.FindByText("Amt D");
if (item == null) {
    ddlComputedliat1.Items.Insert(1, lblnewamountamt.Text);
}

이 메서드가 null을 반환하는지 확인할 수 있습니다.

if (ddlCustomerNumber.Items.FindByText(GetCustomerNumberCookie().ToString()) != null)
    ddlCustomerNumber.SelectedIndex = 0;

//? if 대신 연산자

ddlCustomerNumber.SelectedValue = ddlType.Items.FindByValue(GetCustomerNumberCookie().ToString()) != null ? GetCustomerNumberCookie().ToString() : "0";

함수가 Nothing을 반환하면 아래에서 시도해 볼 수 있습니다.

if (ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString()) != Nothing)
{
...
}

Sometimes the value needs to be trimmed of whitespace or it won't be matched, in such case this additional step can be used (source):

if(((DropDownList) myControl1).Items.Cast<ListItem>().Select(i => i.Value.Trim() == ctrl.value.Trim()).FirstOrDefault() != null){}

참고URL : https://stackoverflow.com/questions/2007203/best-way-to-check-if-a-drop-down-list-contains-a-value

반응형