【问题标题】:DropdownList: showing text instead of value in template while not editingDropdownList:在不编辑时在模板中显示文本而不是值
【发布时间】:2012-03-01 00:38:19
【问题描述】:

我浏览了整个网站,但还没有看到这样的问题。

我有一个显示员工信息的 DetailsView。它有一个 DropDownList,所以我可以选择员工的主管。它存储主管的 ID 号。 DropDownList 在编辑时显示主管的姓名。

我现在的问题是,当没有编辑 DetailsView 时,ItemTemplate 只显示主管的 ID 号。我想显示主管的名字。有关如何完成此操作的任何提示?

<asp:TemplateField ID="Supervisor" HeaderText="Supervisor" SortExpression="SupervisorID">
         <EditItemTemplate>
            <asp:DropDownList ID="SupervisorID" runat="server" DataSourceID="SqlDataSource3" DataTextField="Name" DataValueField="ID" SelectedValue='<%# Bind("SupervisorID") %>'>
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" SelectCommand="SELECT [ID], [LastName] + ', ' + [FirstName] AS [Name] FROM [Employees] Order by LastName, FirstName"></asp:SqlDataSource>
         </EditItemTemplate>
         <ItemTemplate >
            <asp:Label Runat="server" Text='<%# Bind("SupervisorID") %>' ID="Label1"></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>

【问题讨论】:

  • 你又提交同样的问题了吗?

标签: asp.net drop-down-menu detailsview


【解决方案1】:

也许只有我一个人,但我从来没有从 aspx 页面进行这种数据访问。以下是我从后面的代码 (C#) 中执行此操作的方法:

        foreach (Employee x in empList)
        {
            ddlallemployees.Items.Add(new ListItem(x.FullNameE, x.EmployeeID.ToString()));
        }

在我的例子中,我将所有员工放入一个 EmployeeList 对象中,然后遍历这些对象,将它们附加到员工下拉列表中,将每个条目的 .Text 分配给员工的全名,并将 .Value 分配给员工的 EmployeeID。

这会用可读的名称填充下拉列表,但仍然有它们的关联 ID(只是没有向用户显示)。

然后当用户进行选择时,我可以说 ddlallemployees.SelectedItem.Value 来获取他们选择的任何人的 ID。

如果您没有可比较的员工对象和employeeList 对象系统,您仍然可以通过使用数据读取器运行查询并说while(reader.Read()) 然后将每个结果附加到通过上面的代码下拉列表。

【讨论】:

    【解决方案2】:

    在item Template中取另一个带有EVAL函数的Supervisor名称标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2011-11-05
      • 1970-01-01
      相关资源
      最近更新 更多