동일한 항목/값을 가진 네 개의 드롭 다운 목록이 있습니다. 양식을 업로드 할 때 동일한 값이 두 번 이상 선택되지 않도록하고 싶습니다. 어떻게 사용자 정의 유효성 검사기를 사용하여 그렇게 할 수 있습니까? 감사!여러 드롭 다운 목록에서 동일한 값 선택 안 함
답변
나는 같은 값을 선택할 수 없도록 Kyra의 드롭 다운 목록을 수정하는 첫 번째 해결책을 옹호 할 것이며, 사용자에게 잘못된 것을 알려주는 것보다 항상 문제를 예방하는 것이 더 좋습니다. 당신이 CustomValidator을 사용하고자 할 경우, 다음 코드는 작동합니다 : 뒤에 코드 또는 스크립트 태그
<asp:CustomValidator ID="dropDownValidation" runat="server" OnServerValidate="dropDownValidation_ServerValidate"
ErrorMessage="The same value cannot be selected in more than one drop down." />
그리고있다.
protected void dropDownValidation_ServerValidate(object sender, ServerValidateEventArgs e)
{
e.IsValid = !haveSameValue(DropDownList1.SelectedValue, DropDownList2.SelectedValue) &&
!haveSameValue(DropDownList1.SelectedValue, DropDownList3.SelectedValue) &&
!haveSameValue(DropDownList1.SelectedValue, DropDownList4.SelectedValue) &&
!haveSameValue(DropDownList2.SelectedValue, DropDownList3.SelectedValue) &&
!haveSameValue(DropDownList2.SelectedValue, DropDownList4.SelectedValue) &&
!haveSameValue(DropDownList3.SelectedValue, DropDownList4.SelectedValue);
}
protected bool haveSameValue(string first, string second)
{
if (first != null && second != null)
{
return first.Equals(second);
}
return first == null && second == null;
}
이것은 분명히 더 정제 될 수 있고, 자바 스크립트 함수는 ClientValidationFunction 속성을 이용하여, 원하는 경우, 클라이언트 측의 검증을 제공하는데 사용될 수있다.
이것은 최선의 대답은 아니지만 항상 각 드롭 다운 목록에 actionlistener를 추가하여 드롭 다운 목록의 on에 대한 선택 항목이 변경 될 때마다 호출되도록 할 수 있습니다.
두 번째 드롭 다운 목록에서 선택한 요소가 변경되면이 요소가 해당 actionListener를 호출 한 다음 거기에서 다른 드롭 다운 목록을 재설정하므로 선택한 값이 표시되지 않거나 가능한 경우 설정할 수 없습니다. 이 값을 선택
또는
드롭 다운 목록 중 하나의 선택이 변경 당신이 다른 드롭 다운 목록에서 다른 선택 값에 동일 그것은 당신에게 않는 경우 중 하나가 MSGBOX 표시가 있는지 확인
및/또는 공백 선택 또는 이미 사용되지 않은 첫 번째 사용 가능한 값으로 선택을 변경합니다.정말 감사합니다. 내가 actionlistener가 무엇인지 모르겠지만 당신의 솔루션을 연구하고 그것을 validator보다 더 잘 찾으면 구현할 것입니다. – netNewbi3
haveSameValue 함수에 약간의 작업이 있습니다. 이것은 나를 위해 작동하는 것 같다. 당신의 도움을 주셔서 감사합니다.
protected bool haveSameValue(string first, string second)
{
if (!string.IsNullOrEmpty(first) & !string.IsNullOrEmpty(second) && first.Equals(second)) {
return first.Equals(second);
}
}
안녕하세요, 귀하의 도움에 많은 감사드립니다. 사용자 정의 유효성 검사기가 올바르게 작동합니다. 또한 고객의 조언을 받아 클라이언트 유효성 검사 기능을 코딩 할 것입니다. 서버 유효성 검사가 null 값도 허용하는 방법을 알려 주시겠습니까? 감사! – netNewbi3
null 값을 처리하도록 내 대답을 업데이트했습니다. 나는 이것을 실제로 시도하지 않았기 때문에 참고로 사용해야합니다. – sgriffinusa