【问题标题】:inline c# code inside aspx page在 aspx 页面内的内联 c# 代码
【发布时间】:2014-01-29 22:27:47
【问题描述】:

我想根据 userName 变量显示不同的下拉选项,但不确定如何执行此操作。代码如下:

<form id="frmViewRequest" runat="server">
    <div class="widget-content">

       <div class="padd"><div class="row">
          <div class="col-md-2">
             <% if (userName == "jpublic"){
                <asp:DropDownList class="form-control" runat="server" AutoPostBack="true" ID="ddlChangeStatus">
                <asp:ListItem Text="Under Review" value="1" />
                </asp:DropDownList>
              }
              else{
                <asp:DropDownList class="form-control" runat="server" AutoPostBack="true" ID="ddlChangeStatus">
                <asp:ListItem Text="Under Review" value="1" />
                <asp:ListItem Text="Approved" value="2" /> 
                <asp:ListItem Text="Rejected" value="3" /> 
                <asp:ListItem Text="Logged" value="4" /> 
                <asp:ListItem Text="Completed" value="5" /> 
               </asp:DropDownList>
               }
               %>

这可能吗?如果是这样,我将如何根据用户名显示不同的 ListItems? 谢谢!

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    不要声明多个下拉列表。

    相反,在代码隐藏中填充您的下拉列表:

    if (username == "jpublic")
       ddlChangeStatus.DataSource = ...;
    else
       ddlChangeStatus.DataSource = ...;
    
    ddlChangeStatus.DataTextField = ...;
    ddlChangeStatus.DataValueField = ...;
    ddlChangeStatus.DataBind();
    

    或使用“静态”数据:

    ddlChangeStatus.Items.Add(new ListItem("Under Review", "1"));
    if (username != "jpublic")
    {
       ddlChangeStatus.Items.Add(new ListItem("Approved", "2"));
       ddlChangeStatus.Items.Add(new ListItem("Rejected", "3"));
       ddlChangeStatus.Items.Add(new ListItem("Logged", "4"));
       ddlChangeStatus.Items.Add(new ListItem("Completed", "5"));
    }
    

    【讨论】:

    • 当我专门回答这个问题时(内联 c#),Justin 的方法更受欢迎,因为您应该在代码中填充下拉列表。除非这是一个快速解决方案。
    • 谢谢@Papa,我会试试贾斯汀的解决方案。
    • 如果您明确只需要示例中提到的列表项,则可以使用 ddlChangeStatus.items.Add() 方法,而不是绑定到数据源。
    【解决方案2】:

    您需要打开/关闭每个 c# 行。

    <asp:DropDownList class="form-control" runat="server" AutoPostBack="true" ID="ddlChangeStatus">
    <% if (userName == "jpublic"){ %>
                <asp:ListItem Text="Under Review" value="1" />
    <% } else { %>
                <asp:ListItem Text="Under Review" value="1" />
                <asp:ListItem Text="Approved" value="2" /> 
                <asp:ListItem Text="Rejected" value="3" /> 
                <asp:ListItem Text="Logged" value="4" /> 
                <asp:ListItem Text="Completed" value="5" /> 
    <% } %>
    </asp:DropDownList>
    

    【讨论】:

    • 我收到一个错误:“ID 'ddlChangeStatus' 已被另一个控件使用。”它在 if 和 else 中看到 ID="ddlChangeStatus"。这有意义吗?
    • 检查我的编辑。对不起。在 if 语句之外定义下拉列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多