Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从组合框中获取select语句列信息_C#_Winforms_Combobox - Fatal编程技术网

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

C# 从组合框中获取select语句列信息,c#,winforms,combobox,C#,Winforms,Combobox,希望我不会听起来很困惑,但我不确定我想说的是否可能 我有一个select语句来获取名称、id和guid。我将每个组合框的显示设置为name,值设置为Id。是否有一种方法可以将guid分配给组合框,以便在winforms应用程序中使用它 以下是我对select语句的理解: private void secondChild_drp_SelectedIndexChanged(object sender, EventArgs e) { string secondChildId =

希望我不会听起来很困惑,但我不确定我想说的是否可能

我有一个select语句来获取名称、id和guid。我将每个组合框的显示设置为name,值设置为Id。是否有一种方法可以将guid分配给组合框,以便在winforms应用程序中使用它

以下是我对select语句的理解:

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()具有
过程或函数StoreProcName指定的参数太多。


我只想获得与我传入的id关联的guid。

基本上与我已经发布的答案相同:

您可以从数据库查询中定义要填充的简单对象:

 public class Item
 {
        public int ID { get; set; }
        public string DisplayName { get; set; }
        public Guid Guid{ get; set; }
 }
您的实现可能如下所示(一些模型数据):

然后,根据您选择的值,您可以通过您的项目进行查询并获取项目:

   var key = (int)listBox1.SelectedValue;
   foreach (var existingItem in items)
   {
            if (existingItem.Key == key)
            {
                //woohoo got it!
               Debug.Print(existingItem.Guid.ToString())
            }
   }

您可以从数据表中获取guid,如下所示,其中您的SelectedId是组合框selecteditem id

var results = from row in dt.AsEnumerable()
where row.Field<int>("ID") == yourselectedid
select row;
var results=来自dt.AsEnumerable()中的行
其中row.Field(“ID”)==您选择的EDID
选择行;

现在,您可以从结果中获得所需的所有列。

您可以将这两个值都放在值成员中,用诸如“12;0000-000-0000”之类的分隔符分隔,然后用字符串再次分隔值成员。拆分。

您是指两个值成员吗?您到底想做什么。我们可能会给您一个解决方案?@EhsanUllah我想获取组合框项的guid-出于安全原因,我不使用id。个人可以猜测ID,但很难猜测GUID。我正在使用所选项目的guid来显示更多详细信息您在dt中有包含id和guid的所有数据吗?请参阅下面的答案,如果您是指其他内容,请告诉我。
listBox1.DataSource=items项目来自哪里?@Masriyah查看完整答案;)因此,我实际上创建了一个存储过程,当我在idso中传递时,当我创建var时,它将提供guid。我是否使用
语句在
中创建它?@Masriyah否您必须将数据表保存在某个位置,以便在combobox中更改所选项时您可以使用它。然后您可以稍后查询它以获得guid。@Masriyah只是想了想,您也可以像DataTable dt=comboBox1.DataSource as DataTable这样做;然后你可以查询你的dt,而不必在类级别保存它。我将用我目前所拥有的更新我的帖子,然后我们可以看一下。我真的很感谢你的帮助
var results = from row in dt.AsEnumerable()
where row.Field<int>("ID") == yourselectedid
select row;