C# 从组合框中获取select语句列信息
希望我不会听起来很困惑,但我不确定我想说的是否可能 我有一个select语句来获取名称、id和guid。我将每个组合框的显示设置为name,值设置为Id。是否有一种方法可以将guid分配给组合框,以便在winforms应用程序中使用它 以下是我对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 =
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;