![](/img/trans.png)
[英]ASP .NET: CustomValidator doesn't launch its ServerValidate method
[英]asp.net Dropdownlist Customvalidator servervalidate referencing control
我有一個從數據庫填充的下拉列表,根據業務邏輯,我需要能夠使用服務器端驗證從該下拉列表中驗證所選的項目(TEXT)。 需求狀態我不能簡單地將其作為SQL語句的一部分過濾掉。 我一直嘗試使用的解決方案是在后面的代碼中簡單地創建一個customvalidation。
稱為驗證,但我無法弄清楚如何為所選項目引用ddl DataTextField值。 當我嘗試執行asp.net系統下方的服務器端代碼時,表明我的dropdownlist在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;
}
墨菲定律,幾個小時后回答您自己的問題。
DropDownList ddlList=DetailsView2.FindControl("ddlPosition") as DropDownList;
if (ddlList != null)
{
if (ddlList.SelectedItem.Text.Contains("text")) {
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.