从组合框中获取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。

从组合框中获取select语句列信息

您可以从数据表中获取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