2015-06-26 44 views
0

我有一个表格可以查看和更新​​记录。数据正在从存储过程中填充。除了我的下拉列表外,一切都可以正常使用。这背后是我的代码:显示下拉列表中的选定值

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> 

我能做到这一切在一个步骤就像我试图做,或做我需要做这两个步骤?我的问题的后半部分是我还需要拥有与用户相对应的项目,默认情况下会在下拉列表中选中。第二种方法填充下拉列表,尽管没有被选中,因为它是一个单独的查询,所以与我在表单中查看的用户数据没有关联。

+0

你必须在后面的尝试你的代码返回从数据库 –

+1

多个结果集:''DepartmentDropDown .SelectedText = sdr [“Department”]。ToString()'',你需要在第二种方式设置下拉列表中的选定项时,数据绑定在后面的代码下拉 –

+0

@EhsanSajjad错误与您的建议。下拉菜单不包含SelectedText的定义。我有trid使用SelectedItem.Text,但我得到一个错误“对象引用未设置为对象的实例。”除了我在第一个例子中的位置之外,我没有看到数据绑定的位置,这是我在第二个例子中完成的,但没有运气。 – aantiix

回答

0

明白了。解决方案是下面贴的参考...

后面的代码:

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> 
相关问题