【问题标题】:asp.net Dropdownlist Customvalidator servervalidate referencing controlasp.net Dropdownlist Customvalidator servervalidate 引用控件
【发布时间】:2013-10-16 14:07:19
【问题描述】:

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

调用了验证,但我不知道如何引用所选项目的 ddl DataTextField 值。当我尝试在 asp.net 系统下方执行服务器端代码时,我的下拉列表在详细信息视图中不存在,并因此提供红色下划线。在这种情况下,它将始终为插入模式。

建议


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;    

}

【问题讨论】:

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


    【解决方案1】:

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

            DropDownList ddlList=DetailsView2.FindControl("ddlPosition") as DropDownList;
    
            if (ddlList != null)
            {
    
                if (ddlList.SelectedItem.Text.Contains("text")) {
                            args.IsValid = false;    
                }
                 else
                {
                       args.IsValid = true;
                }
    
            }    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      相关资源
      最近更新 更多