Выберите данные из базы данных, затем сопоставьте данные с выпадающим списком

70
4

У меня есть список распаковки, и я хочу получить "пользовательский" конкретный "заголовок" из базы данных и установить его в этот раскрывающийся список.

Но вместо того, чтобы указывать заголовок, специфичный для значений dropdownlists внутри него, он просто заменяет выбранный текст заголовка вместо того, чтобы выбирать текст Ms в раскрывающемся списке.

Есть ли какое-либо решение /s, чтобы установить значение названия в его законном месте и не заменять текст в выпадающем списке?

Вот мой код 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

Спасибо! Удачного дня

спросил(а) 2014-09-17T12:46:00+04:00 6 лет, 1 месяц назад
1
Решение
82

Вы можете попробовать следующее:

userTitle.SelectedItem.Value = reader["title"].ToString();

Вместо того, чтобы использовать

userTitle.SelectedItem.Text = reader["title"].ToString();

Кроме того, я бы предложил вам использовать параметризованный sql-запрос вместо конкатенации строк, чтобы построить запрос. Такой подход поможет вам избежать инъекций sql.

Например, вы можете попробовать следующее:

string query = "select title from users where username=@username";
SqlCommand command = new SqlCommand(query, con);
command.Parameters.Add(new SqlParameter("username",theUser));

ответил(а) 2014-09-17T12:55:00+04:00 6 лет, 1 месяц назад
41

Похоже, вы хотите сделать что-то вроде:


userTitle.SelectedValue = reader["title"].ToString();

ответил(а) 2014-09-18T08:38:00+04:00 6 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема