我有两个组合框,应该包含两种不同的信息。
1.cb1:从information_schema.tables中选择table_name(这显示多个表)
2.cb2:应该用列名填充它。
示例:我在cb1中有三个具有相同属性的表,但在EmpName
列(tblLondon,tblBerlin,tblRom,...)中具有不同的值
现在,每当我在第一个组合框中选择一个表时,我想动态地在第二个组合框中显示EmpName列。
cb1[tblLondon] cb2[John,Mavis,Chris,Mike..]
OR
cb1[tblBerlin] cb2[Günther,Peter, Sophie,Sunny, ..]
你可以帮助我吗
string C = ConfigurationManager.ConnectionStrings[""].ConnectionString;
SqlConnection con = new SqlConnection(C);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = ("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_NAME ASC");
try
{
// Open connection, Save the results in the DT and execute the spProc & fill it in the DT
con.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
dt = new DataTable();
adapter.Fill(dt);
cbTbl.DisplayMember = "TABLE_NAME";
cbTbl.ValueMember = "TABLE_NAME";
//Fill combobox with data in DT
cbTbl.DataSource = dt;
// Empty bzw. clear the combobox
cbTbl.SelectedIndex = -1;
此代码正在运行并填充我的cb1(组合框)
现在我真的不知道如何使用cb2
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
}
答案 0 :(得分:0)
如果我理解正确,并且您在SQL服务器或其他数据库中有此数据,则应使用SelectedIndexChange
事件并为该Id加载项目(使用显示成员和值成员作为匹配ID)。
看看this。它可能对您有所帮助
编辑:
您可以使用以下代码执行此操作:(如果您不使用数据库)
你应该在cb1.SelectedIndexChange(或value)
var cb2items = new Dictionary<int, string> {{1, "Name"}, {1, "anotherName"},{2,"Name"},{2, "anotherName"}}; // use the number for parent Id in cb1
foreach (var item in cb2items)
{
if (item.Key == int.Parse(comboBox1.SelectedValue.ToString()))
{
comboBox2.Items.Add(item);
}
}
编辑2:
在cb1.SelectedValueChange:
中使用此代码string C = ConfigurationManager.ConnectionStrings[""].ConnectionString;
SqlConnection con = new SqlConnection(C);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = ("SELECT ... WHERE TableName = cb1.SelectedValue");
spProc & fill it in the DT
con.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
dt = new DataTable();
adapter.Fill(dt);
cbTbl.DisplayMember = "TABLE_NAME";
cbTbl.ValueMember = "TABLE_NAME";
cbTb2.DataSource = dt;
您还可以创建一个过程,将表名称中的项目作为输入发回。如果你使用程序,你的代码表现更好。
编辑3:
将此代码放入cbTb2.SelectedValueChange
事件:
try
{
int a = int.Parse(cbTB2.SelectedValue.ToString());
}
catch { }
答案 1 :(得分:0)
您可能希望看到组合框的事件,“SelectedIndexChanged”或“SelectedValueChanged”应该这样做