我正在尝试填充ddl(有效),当我选择'FirstName'时,会填充文本框进行编辑。 当我单步执行程序时,(drp_Customer.SelectedItem.Value)总是'23',这是我的DB中的最后一个'Id'。 填充文件但有23个详细信息..
我想我需要确保ddl的详细信息匹配。
这是我的代码。 这只是粗略的,因为我试图向某人展示它是如何运作的。
using (CustomerDataContext obj = new CustomerDataContext())
{
// Get fields for drp_Customer
// ===========================
var allCustomers = from c in obj.Customers
orderby c.FirstName
select new
{
c.FirstName,
c.CustomerId
};
foreach (var item in allCustomers)
{
drp_Customer.Items.Add(item.FirstName);
drp_Customer.SelectedItem.Value = item.CustomerId.ToString();
}
drp_Customer.DataBind();
if (drp_Customer.SelectedItem.Text == " -- Select Customer -- ")
{
lbl_message.Text = "Please select a customer to update";
}
else if (drp_Customer.SelectedItem.Text != " -- Select Customer -- ")
{
Customer myCust = obj.Customers.SingleOrDefault(c => c.CustomerId == Convert.ToInt32
(drp_Customer.SelectedItem.Value));
if (myCust != null)
{
txt_FirstName.Text = myCust.FirstName;
txt_Surname.Text = myCust.Surname;
txt_HouseNumber.Text = myCust.HouseNumberName;
txt_Address.Text = myCust.Address;
txt_Town.Text = myCust.Town;
txt_Telephone.Text = myCust.Telephone;
txt_Postcode.Text = myCust.Postcode;
}
}
答案 0 :(得分:0)
使用DataTextField和DataValueField属性设置将显示的绑定对象的属性以及将用作选定值的属性:
drp_Customer.DataTextField = "FirstName";
drp_Customer.DataValueField = "CustomerId";
drp_Customer.DataSource = allCustomers.ToList();
drp_Customer.DataBind();
答案 1 :(得分:0)
选择最后一项的原因是此循环:
foreach (var item in allCustomers)
{
drp_Customer.Items.Add(item.FirstName);
drp_Customer.SelectedItem.Value = item.CustomerId.ToString();
}
最后一项将是所选项目,因为您总是在更改它。您需要在循环之外分配它。但您目前没有显示哪个客户是正确的选定客户。
请注意,您还可以使用DataSource
+ DataBind
:
drp_Customer.DataTextField = "FirstName";
drp_Customer.DataValueField = "CustomerId";
drp_Customer.DataSource = allCustomers;
drp_Customer.DataBind();
drp_Customer.SelectedValue = customerIDofSelectedCustomer;