DropdownList:在不编辑时显示文本而不是模板中的值

时间:2012-03-01 00:38:19

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

我环顾了网站,但没有看到这样的确切设置问题。

我有一个显示员工信息的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>

2 个答案:

答案 0 :(得分:0)

也许只是我,但我从来没有从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())然后将每个结果附加到通过上面的代码下拉列表。

答案 1 :(得分:0)

在模板项目中使用EVAL功能获取另一个主管名称标签。