Я использую элементы управления ext.net 1.3 в своем приложении ASP.NET 4.0. У меня есть несколько элементов управления ComboBox в моей веб-форме. На этой странице предполагается выполнить две задачи: «Вставить» и «Обновить». При записи новой записи проблем нет, но когда я пытаюсь заполнить элементы управления ComboBox существующими значениями базы данных, возникают различные проблемы. Наиболее тревожным является этот:Почему элементы ComboBox необходимо переустанавливать для получения значения?
ComboBox отображает текст из базы данных, но он не заполняется, и я не могу выбрать член Value ComboBox. Это потому, что он не заселен. Я написал код для заполнения ComboBox в событии Page Load.
Я использую этот код, чтобы выбрать значение из базы данных и показать его на ComboBox:
string Query = "SELECT CustName FROM CustomerMaster WHERE CustID = " + Session["CustomerID"];
var result = DB.Single<Customer>(Query);
CustomerComboBox.setValue = result.CustName;
Этот код успешно извлекает имя клиента и отображает в ComboBox. То, что он не делает, заключается в том, что он не выбирает из списка элементов ComboBox и не заполняет ComboBox.
Если я пытаюсь получить значение Участник текста с помощью:
CustomerComboBox.SelectedItem.Value;
это дает ошибку.
Чтобы заставить его работать, мне нужно снова щелкнуть на ComboBox, чтобы он заполнился, и я вручную выбираю одно и то же имя клиента из списка, чтобы выбрать значение.
Как избавиться от этой проблемы?
- ред -
Код для заполнения ext.net ComboBox это:
public void FillExtComboList(string ParameterFlag, ComboBox DropDownName)
{
string Query = "";
using (TransactionScope transactionScope = new TransactionScope())
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cncustomer"].ConnectionString.ToString()))
{
con.Open();
SqlDataReader dr;
try
{
if (ParameterFlag == "Customer")
{
Query = "SELECT CustName FROM CustomerMaster";
}
//Check whether the Drop Down has existing items. If YES, empty it.
if (DropDownName.Items.Count > 0)
DropDownName.Items.Clear();
SqlCommand cmd = new SqlCommand(Query, con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
Ext.Net.ListItem extLI = new Ext.Net.ListItem();
extLI.Text = dr[0].ToString();
DropDownName.Items.Add(extLI);
}
dr.Close();
con.Close();
}
catch (Exception ex)
{
con.Close();
// RunCustomScript("alert('" + ex.Message.ToString() + "')", callingPageObjectName);
}
} /* End of SQL Connection */
transactionScope.Complete();
} /* End of Transaction Scope */
}
По событию загрузки страницы, управления ComboBox заполнен описанным выше способом.
Как я сказал, что ComboBox заполняется на PageLoad. Отредактировано сообщение с кодом. – RKh
Пожалуйста, проигнорируйте последнюю путаницу строк DropDownName и CustomerComboBox. Первый параметр, а второй - имя ComboBox. – RKh