我有一个Dropdownlist,我想从数据库中获取“用户”特定的“标题”并将其设置为该下拉列表。
但是,不是将标题设置为特定于其中的下拉列表值,而是替换选择标题文本,而不是在下拉列表中选择文本Ms。
是否有任何解决方案可以在正确的位置设置标题值而不替换下拉列表中的文本?
这是我的aspx代码
<asp:DropDownList ID="userTitle" runat="server">
<asp:ListItem Text="Select Title" Value="-1"></asp:ListItem>
<asp:ListItem Text="Mr" Value="Mr"></asp:ListItem>
<asp:ListItem Text="Mrs" Value="Mrs"></asp:ListItem>
<asp:ListItem Text="Miss" Value="Miss"></asp:ListItem>
<asp:ListItem Text="Ms" Value="Ms"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorTitle" runat="server" ErrorMessage="User Title is required" InitialValue="-1" ForeColor="Red" ControlToValidate="userTitle"></asp:RequiredFieldValidator>
这是我的代码隐藏
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateTheFields();
}
}
private void PopulateTheFields()
{
String str;
SqlCommand comm;
con.Open();
str = "select title from users where username='" + theUser + "'";
comm = new SqlCommand(str, con);
SqlDataReader reader = comm.ExecuteReader();
if (reader.Read())
{
userTitle.SelectedItem.Text = reader["title"].ToString();
reader.Close();
con.Close();
}
}
这是一个打样屏幕。
http://i.stack.imgur.com/qgLc1.png
谢谢!祝你有美好的一天
答案 0 :(得分:3)
您可以尝试以下方法:
userTitle.SelectedItem.Value = reader["title"].ToString();
而不是使用
userTitle.SelectedItem.Text = reader["title"].ToString();
此外,我建议您使用参数化的sql查询而不是连接字符串来构建查询。这种方法可以帮助您避免sql injections。
例如,您可以尝试以下方法:
string query = "select title from users where username=@username";
SqlCommand command = new SqlCommand(query, con);
command.Parameters.Add(new SqlParameter("username",theUser));
答案 1 :(得分:0)
听起来你想做类似的事情:
userTitle.SelectedValue = reader["title"].ToString();