在下拉列表中显示选定值

Show Selected Value in Dropdown

我有一个可以查看和更新​​记录的表格。数据是从存储过程填充的。除了我的下拉列表外,一切都很好。这是我背后的代码:

using (SqlDataReader sdr = cmd.ExecuteReader())
{
    while (sdr.Read())
    {
        EmployeeIdTextBox.Text = sdr["EmployeeID"].ToString();
        EmployeeNameTextBox.Text = sdr["EmployeeName"].ToString();
        DepartmentDropDown.DataTextField = sdr["Department"].ToString();
        DepartmentDropDown.DataValueField = sdr["Department"].ToString();
        DepartmentDropDown.DataBind();
    }
}

这是我的 aspx:

<div>
    EmployeeID:
    <asp:TextBox ID="EmployeeIdTextBox" runat="server" CssClass="textBoxWidth" ReadOnly="True"></asp:TextBox>
</div>
<div>
    EmployeeName:
    <asp:TextBox ID="EmployeeNameTextBox" runat="server" CssClass="textBoxWidth" ReadOnly="True"></asp:TextBox>
</div>
<div>
    Department:
    <asp:DropDownList ID="DepartmentDropDown" runat="server" CssClass="textBoxWidth"></asp:DropDownList>
</div>

但是,如果我像下面这样更改我的 aspx,我可以在下拉列表中获取值,尽管我更愿意在后端执行所有这些操作,因为我有比下面显示的更多的字段。

<asp:DropDownList ID="DepartmentDropDown" runat="server" CssClass="textBoxWidth"
    DataSourceID="SqlDS1" DataTextField="Department" 
    DataValueField="Department" AutoPostBack="True">
</asp:DropDownList>

<asp:SqlDataSource ID="SqlDS1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT DISTINCT Department FROM Employees">
</asp:SqlDataSource>

我可以像我尝试做的那样一步完成所有这些,还是需要分两步完成?我的问题的后半部分是我还需要在下拉列表中默认选择与用户相对应的项目。第二种方法填充下拉列表,但未选择任何内容,因为它是一个单独的查询,因此与我在表单中查看的用户数据没有关联。

知道了。解决方法贴在下面供参考...

后面的代码:

using (SqlDataReader sdr = cmd.ExecuteReader())
{
    while (sdr.Read())
    {
        EmployeeIdTextBox.Text = sdr["EmployeeID"].ToString();
        EmployeeNameTextBox.Text = sdr["EmployeeName"].ToString();
        DepartmentDropDown.DataBind();
        DepartmentDropDown.Items.FindByValue(sdr["Department"].ToString()).Selected = true;
    }
}

ASPX:

<asp:DropDownList ID="DepartmentDropDown" runat="server" CssClass="textBoxWidth"
    DataSourceID="SqlDS1" DataTextField="Department" 
    DataValueField="Department" AutoPostBack="True">
</asp:DropDownList>

<asp:SqlDataSource ID="SqlDS1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT DISTINCT Department FROM Employees">
</asp:SqlDataSource>