【发布时间】:2015-09-14 00:23:32
【问题描述】:
我有一个可以查看和更新记录的表单。数据是从存储过程中填充的。除了我的下拉列表之外,一切都很好。这是我的代码:
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>
我可以像我尝试做的那样一步完成,还是需要分两步完成?我的问题的后半部分是我还需要在默认情况下在下拉列表中选择与用户对应的项目。第二种方法填充下拉列表,但没有选择任何内容,因为它是一个单独的查询,因此与我在表单中查看的用户数据没有关联。
【问题讨论】:
-
你必须从数据库中返回多个结果集
-
在你的代码后面尝试:
DepartmentDropDown.SelectedText= sdr["Department"].ToString(),当你做第二种方式时,你需要在代码后面的数据绑定下拉列表,只需设置下拉列表的选定项 -
@EhsanSajjad 您的建议有误。下拉菜单不包含 SelectedText 的定义。我曾尝试使用 SelectedItem.Text,但出现错误“对象引用未设置为对象的实例”。除了我在第一个示例中的位置之外,我没有看到在哪里进行数据绑定,我在第二个示例中也这样做了,但没有运气。
-
绑定下拉菜单也来自后面的代码
标签: c# sql asp.net sql-server-2008 drop-down-menu