asp.net Dropdownlist Customvalidator servervalidate引用控件

时间:2013-10-16 14:07:19

标签: c# asp.net drop-down-menu detailsview customvalidator

我有一个从数据库中填充的下拉列表,根据业务逻辑,我需要能够从服务器端vaildation的下拉列表中验证所选项目(TEXT)。需求状态我不能简单地将其作为SQL语句的一部分进行过滤。我一直试图解决的解决方案是在后面的代码中创建一个自定义验证。

调用验证,但我无法弄清楚如何引用所选项目的ddl DataTextField值。当我尝试在asp.net系统下面执行服务器端代码时,表明我的下拉列表在详细信息视图中不存在,并提供红色下划线作为结果。在这种情况下,它将始终是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;    

}

1 个答案:

答案 0 :(得分:1)

墨菲定律,几小时后回答你自己的问题。

        DropDownList ddlList=DetailsView2.FindControl("ddlPosition") as DropDownList;

        if (ddlList != null)
        {

            if (ddlList.SelectedItem.Text.Contains("text")) {
                        args.IsValid = false;    
            }
             else
            {
                   args.IsValid = true;
            }

        }