从组合框中获取select语句列信息
本文关键字:语句 信息 select 获取 组合 | 更新日期: 2023-09-27 18:25:29
希望我听起来不会令人困惑,但我不确定我想要达到的目标是否可行。
我有一个select语句来获取name、id和guid。我将每个组合框的显示设置为name,将值设置为Id。有没有一种方法可以让我把guid分配给组合框,这样我就可以在我的winforms应用程序中使用它?
这是我的选择声明:
private void secondChild_drp_SelectedIndexChanged(object sender, EventArgs e)
{
string secondChildId = secondChild_drp.SelectedValue.ToString();
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT ... WHERE em.ChildID = (" + secondChildId + ")", conString))
{
DataTable dt = new DataTable();
sda.Fill(dt);
thirdChild_drp.ValueMember = "ID";
thirdChild_drp.DisplayMember = "DisplayName";
thirdChild_drp.DataSource = dt;
}
}
cmd.CommandText="StoreProcName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ChildID", secondChildId);
cmd.Connection = con2;
con2.Open();
reader = cmd.ExecuteReader();
var guid = reader.ToString();
reader.Close();
con2.Close();
}
现在当我运行这个时,它告诉我reader = cmd.ExecuteReader();
有Procedure or function StoreProcName has too many arguments specified.
我只想获得与我传入的id相关联的guid。
您可以从数据表中获取guid,如下所示,其中您的selectedid是selecteditem id的组合框。
var results = from row in dt.AsEnumerable()
where row.Field<int>("ID") == yourselectedid
select row;
现在,根据结果,您可以获得所需的所有列
基本上与我在这里发布的答案相同:
您可以定义一个简单的对象,从数据库查询中填充:
public class Item
{
public int ID { get; set; }
public string DisplayName { get; set; }
public Guid Guid{ get; set; }
}
您的实现可能看起来像这样(一些模型数据):
listBox1.DataSource = items;
listBox1.DisplayMember = "DisplayName";
listBox1.ValueMember = "ID";
然后根据您选择的值,您可以查询您的项目并获得项目:
var key = (int)listBox1.SelectedValue;
foreach (var existingItem in items)
{
if (existingItem.Key == key)
{
//woohoo got it!
Debug.Print(existingItem.Guid.ToString())
}
}
您可以将两个值都放在值成员中,用分隔符(如:"12;0000-000-0000")分隔,然后用String.Split.再次分隔value Menber