드롭 다운 목록에 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까?
사용자가 새 페이지로 이동할 때이 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.FindByValue
FindByText와 동일한 방식으로 작동하는 방법도 있지만 대신 값을 기반으로 검색합니다.
그러면 항목이 반환됩니다. 간단히 변경 :
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
'IT Share you' 카테고리의 다른 글
UIViewController로 다시 팝업 된 후 UIScrollView의 원점이 변경됩니다. (0) | 2020.12.14 |
---|---|
IE11에서 createObjectURL로 만든 링크 열기 (0) | 2020.12.14 |
MySQLi 준비된 문 오류보고 (0) | 2020.12.14 |
SQL 데이터베이스를 사용하는 이유는 무엇입니까? (0) | 2020.12.14 |
NIB와 XIB Interface Builder 파일 형식의 차이점은 무엇입니까? (0) | 2020.12.14 |