我正在使用Windows窗体应用程序,在其中必须编辑给定记录。该记录还包含一个下拉列表。我想做的是允许用户编辑下拉列表项以及其他记录。
我已经从数据库中查询了用户必须编辑的所需下拉列表项,并将其分配给字符串变量,如下所示:
DataTable dtMName = Products.SelectByManufacturerId(manufacturerId);
if (dtMName.Rows.Count > 0)
{
foreach (DataRow item in dtMName.Rows)
{
string manufacturerName = item[0].ToString();
}
}
现在,在foreach循环中(由于返回的数据行只有一个制造商名称,用户稍后将对其进行编辑),我想选择与string manufacturerName
相匹配的下拉列表项。
到目前为止,我已经尝试了以下代码,但是没有运气。
childEditProduct.cmbManufacturer.SelectedIndex = childEditProduct.cmbManufacturer.FindString(manufacturerName);
这种用于选择匹配的下拉列表项的方法是否存在问题?还是有什么有效的方法可以帮助我解决这个问题?任何帮助将不胜感激!
答案 0 :(得分:1)
答案 1 :(得分:0)
您可能希望以不同的方式使用ComboBox
。
就像使用其DataSource和Id(int)而不是名称(字符串)一样。
例如:how to bind a list to a combobox? (Winforms)。
答案 2 :(得分:0)
我不知道您要在这里做什么,但是您可以将组合框分配给以下项目:
childEditProduct.cmbManufacturer.SelectedIndex =
childEditProduct.cmbManufacturer.Items.Cast<string>().ToList()
.FindIndex(x => x == manufacturerName);
答案 3 :(得分:0)
//use combobox and just set SelectedText
ComboBox.SelectedText = manufacturerName;
答案 4 :(得分:0)
在我使用以下功能在childForm加载事件上加载制造商下拉列表时:
private void LoadManufacturers()
{
cmbManufacturer.Items.Clear();
DataTable dtManufacturers = DataAccess.Select("select manufacturername from tblmanufacturer order by manufacturername asc");
foreach (DataRow dr in dtManufacturers.Rows)
{
cmbManufacturer.Items.Add(dr[0].ToString());
}
//cmbManufacturer.SelectedIndex = 0;
}
在为页面加载事件加载制造商时,我还使用代码cmbManufacturer.SelectedIndex = 0;
指定了下拉列表的选定索引,稍后将其注释掉。
完成后,我将在下拉列表的加载事件中重新计算(重新查询)选定的制造商(用户要更新):
private void frmChildEditProduct_Load(object sender, EventArgs e)
{
LoadManufacturers(); // Calling the loadManufacturers function to load all the manufacturers to the dropdown list.
string manufacturerID = lblManufacturerId.Text;
DataTable dtMName = Products.SelectByManufacturerId(manufacturerID);
if (dtMName.Rows.Count > 0)
{
foreach (DataRow manufacturer in dtMName.Rows)
{
string manufacturerName = manufacturer[0].ToString();
cmbManufacturer.SelectedIndex = Convert.ToInt32(cmbManufacturer.FindStringExact(manufacturerName));
}
}
}
我的问题解决了。感谢您对Stackoverflow的支持。