드롭다운 목록에 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까?
사용자가 새 페이지로 이동할 때 이 ddl의 선택된 인덱스는 쿠키에 의해 결정되지만, 만약 ddl에 해당 쿠키의 값이 포함되어 있지 않다면 0으로 설정했으면 합니다.ddl은 어떤 방법을 사용해야 합니까?루프가 가장 좋은 방법입니까, 아니면 단순히 if 문을 수행할 수 있습니까?
이것이 제가 시도한 것입니다만, 그것은 한 방울도 돌려주지 않습니다.
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.FindByValue
FindBy와 동일한 방식으로 작동합니다.텍스트(대신 값을 기준으로 검색하는 경우 제외).
그러면 아이템이 반환됩니다.간단히 다음으로 변경:
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으로 변환할 수 없습니다."시스템"을 던집니다.Null 참조 예외:개체 참조가 개체의 인스턴스로 설정되지 않았습니다."
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";
함수가 "아무것도"를 반환하지 않는 경우 아래에서 이를 시도할 수 있습니다.
if (ddlCustomerNumber.Items.FindByText(
GetCustomerNumberCookie().ToString()) != Nothing)
{
...
}
때때로 값을 공백으로 잘라내야 하거나 일치하지 않을 수 있습니다. 이러한 경우 이 추가 단계를 사용할 수 있습니다(소스).
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
'programing' 카테고리의 다른 글
텍스트 편집에서 막대 아래를 숨기는 방법 (0) | 2023.06.14 |
---|---|
UIView에 관점 변환을 적용하려면 어떻게 해야 합니까? (0) | 2023.06.14 |
web.config>config>config>runtime>assemblyBinding에서 생성된 항목의 의미/이유는 무엇입니까? (0) | 2023.06.14 |
쿠키 존재 여부 확인 (0) | 2023.06.14 |
C/C++에서 "\"?가 이스케이프 시퀀스인 이유는 무엇입니까? (0) | 2023.06.14 |