我在我的ASP.NET 4.0应用程序中使用ext.net 1.3控件。我的Web窗体上有几个ComboBox控件。该页面应该执行两个任务,插入和更新。保存新记录时没有问题,但是当我尝试用现有数据库值填充ComboBox控件时,会弹出各种问题。最令人不安的是这一个:为什么ComboBox项目需要重新选择才能获得价值?
ComboBox显示来自数据库的文本,但它既没有被填充,也没有我能够选择ComboBox值成员。这是因为它没有填充。我已经编写代码来在页面加载事件中填充ComboBox。
我使用此代码来接从数据库中的值,并显示在组合框:
string Query = "SELECT CustName FROM CustomerMaster WHERE CustID = " + Session["CustomerID"];
var result = DB.Single<Customer>(Query);
CustomerComboBox.setValue = result.CustName;
此代码成功地检索ComboBox中客户名称和显示。它没有做的是它不是从组合框项目列表中选择,也没有填充组合框。
如果我尝试使用检索文本值的成员:
CustomerComboBox.SelectedItem.Value;
提示错误。
为了使它工作,我需要再次点击组合框使其填充,而不是从列表中手动选择相同的客户名称来选择值。
如何摆脱这个问题?
- 编辑 -
的代码来填充ext.net组合框是这样的:
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 */
}
在页加载事件,组合框控件填充有上述方法。
正如我所说的组合框填充在pageLoad的。用代码编辑帖子。 – RKh 2012-03-14 12:39:05
请忽略DropDownName和CustomerComboBox的最后一行混淆。前者是参数,而后者是ComboBox的名称。 – RKh 2012-03-15 04:53:47