C# 如何在组合框C中获取所选项目的id
我正在WinForms项目中使用ComboBox。 我从组合框中显示的SQL server表值中获取属性库。 我需要获取selectedItem的另一个属性OID,并将其从第一个表单FormMaster传递到另一个表单FormImport 不公开; SqlCommand cmd=new-SqlCommandSELECT[ID]FROM[AffecAnalytique].[dbo].[DESCRIPTIF],其中[LIBELLE]='+comboBox3.Text+',con; SqlDataReader rdr=cmd.ExecuteReader; 如果黑斯罗 { 尝试 { 字符串stroid=rdr[OID].ToString; textBox1.Text=rdr[OID].ToString; MessageBox.ShowstrOIDe; } 捕获异常ex{} MessageBox.showtesssst; } else MessageBox.Show11111; con.关闭;C# 如何在组合框C中获取所选项目的id,c#,sql-server,forms,winforms,C#,Sql Server,Forms,Winforms,我正在WinForms项目中使用ComboBox。 我从组合框中显示的SQL server表值中获取属性库。 我需要获取selectedItem的另一个属性OID,并将其从第一个表单FormMaster传递到另一个表单FormImport 不公开; SqlCommand cmd=new-SqlCommandSELECT[ID]FROM[AffecAnalytique].[dbo].[DESCRIPTIF],其中[LIBELLE]='+comboBox3.Text+',con; SqlDataRe
您不会使用那样的SQL,而是使用参数,参数值将是comboBox3.SelectedItem转换为实际类型。类型可能是字符串,也可能是显示文本为该对象属性的对象
var selectedValue = comboBox3.SelectedItem as string; // whatever the item type is
if (selectedValue != null)
{
cmd.Parameters.Add("@libelle", SqlDbType.VarChar).Value = selectedValue;
// your code ...
}
以下是使用SQL server northwind示例数据库的简化完整示例:
void Main()
{
DataContext db = new DataContext(@"server=.\SQLexpress2012;trusted_connection=yes;database=Northwind");
Table<Category> Categories = db.GetTable<Category>();
Table<Product> Products = db.GetTable<Product>();
Form f = new Form { Text="ComboBox ornek", Height=200, Width=500 };
ComboBox cb1 = new ComboBox{ Left=10, Top=10, Width=450, Font=new Font("Courier New",8) };
ComboBox cb2 = new ComboBox{ Left=10, Top=60, Width=450, Font=new Font("Courier New",8) };
f.Controls.AddRange( new Control[] {cb1, cb2} );
cb1.DataSource = Categories.ToList();
cb1.ValueMember = "CategoryId";
cb1.DisplayMember = "CategoryName";
cb1.SelectedIndex = -1;
cb1.SelectedIndexChanged += (sender, args) => {
var selectedCategory = ((ComboBox)sender).SelectedItem as Category;
cb2.DataSource = null;
cb2.Items.Clear();
if (selectedCategory != null)
{
cb2.DataSource = Products.Where (p => p.CategoryId == selectedCategory.CategoryId).ToList();
cb2.DisplayMember = "ProductName";
cb2.ValueMember = "ProductId";
}
};
f.Show();
}
[Table(Name = "Categories")]
public class Category
{
[Column]
public int CategoryId { get; set; }
[Column]
public string CategoryName { get; set; }
[Column]
public string Description { get; set; }
}
[Table(Name = "Products")]
public class Product
{
[Column]
public int ProductId { get; set; }
[Column]
public string ProductName { get; set; }
[Column]
public int CategoryId { get; set; }
}
警告:SQL极易受到注入攻击。你必须解决这个问题,重新开始。编写直接引用特定硬编码数据库的tsql通常是一个巨大的问题。这种做法将防止在同一实例中使用多个环境,并防止使用不同名称的数据库,例如一个用于clientx,一个用于clienty。您的连接应该确定该数据库存在的位置。