0
DB에서 채울 드롭 다운 목록이 있으며 비즈니스 논리에 따라 서버 쪽에서 유효 기간을 지정하여 드롭 다운 목록에서 선택한 항목 (TEXT)의 유효성을 검사 할 수 있어야합니다. 요구 사항 상태 나는 단순히 SQL 문의 일부로 필터링 할 수 없다. 필자가 해보려 던 솔루션은 단순히 코드 뒤에 customvalidation을 만드는 것입니다.asp.net Dropdownlist 컨트롤을 참조하는 Customvalidator 서버 유효성 검사
유효성 검사가 호출되지만 선택한 항목의 ddl DataTextField 값을 참조하는 방법을 알 수 없습니다. 시도하고 asp.net 시스템 아래의 서버 측 코드를 수행 할 때 내 드롭 다운 목록을 detailsview 내에 존재하지 않고 그 결과로 빨간색 밑줄을 제공합니다. 이 경우에는 항상 insertmode가됩니다.
제안
ASP 코드
<asp:DetailsView ID="dtlSample" runat="server" AutoGenerateEditButton="true" AutoGenerateRows="false">
<Fields>
. . .
<asp:TemplateField HeaderText="Position">
<ItemTemplate>
<%# Eval("Age") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlPosition" runat="server" AutoPostBack="True"
LDataSource="Select Position, PositionId from ...." DataTextField="Position" DataValueField="PositionId"
></asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="ddlPosition" runat="server" AutoPostBack="True"
LDataSource="Select Position, PositionId from ...." DataTextField="Position" DataValueField="PositionId"
></asp:DropDownList>
</InsertItemTemplate>
<asp:CustomValidator ID="cvPos" Display="Dynamic" ControlToValidate = "DDLPosition"
OnServerValidate="ddlPos_Check" runat="server" ForeColor="Red" ErrorMessage="My error message"></asp:CustomValidator>
</asp:TemplateField>
</Fields>
코드 뒤에
protected void ddlPos_Check(object sender, ServerValidateEventArgs args)
{
if (ddPosition.SelectedItem.Text.Contains("some value")
args.IsValid = false;
else
args.IsValid = true;
}