gpt4 book ai didi

c# - 默认组合框第一项与数据库结果混合

转载 作者:行者123 更新时间:2023-11-30 23:18:54 27 4
gpt4 key购买 nike

public static void fill_combo(string table, ComboBox cmb, string columns)
{
ds = new DataSet();
try
{
conn.Open();

da = new SqlDataAdapter($"SELECT {columns} FROM [{table}]", conn);

da.Fill(ds, table);
cmb.DataSource = ds.Tables[table];
cmb.ValueMember = ds.Tables[table].Columns[0].ToString();
cmb.DisplayMember = ds.Tables[table].Columns[1].ToString();

cmb.SelectedItem = null;
cmb.Text = "Select...";

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");

}
finally
{
if (conn != null)
{
conn.Close();
}
}
}

大家好。使用上面的代码,我试图从数据库中获取结果并将它们绑定(bind)到一个组合框,但我希望第一个项目是一个随机的“选择...”,它不在数据库中。提前致谢。

最佳答案

选项 1 - 您可以将包含所需值的 DataRow 插入 DataTable:

var connection = @"Your Connection String";
var command = "SELECT Column1, Column2 FROM Table1";
var dt = new DataTable();
using (var da = new SqlDataAdapter(command, connection))
da.Fill(dt);
var row = dt.NewRow();
row["Column1"] = DBNull.Value;
row["Column2"] = "Select an Item";
dt.Rows.InsertAt(row, 0);
this.comboBox1.DataSource = dt;
this.comboBox1.ValueMember = "Column1";
this.comboBox1.DisplayMember = "Column2";

选项 2 - 您可以将 DropDownStyle 设置为 DropDownList 而不是向 DataTable 添加空数据,并且将其 DrawMode 设置为 OwnerDrawFixed 并处理 DrawItem 事件并在选定索引为 -1 时绘制占位符:

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
var combo = sender as ComboBox;
var text = "Select an Item";
if (e.Index > -1)
text = combo.GetItemText(combo.Items[e.Index]);
e.DrawBackground();
TextRenderer.DrawText(e.Graphics, text, combo.Font,
e.Bounds, e.ForeColor, TextFormatFlags.Left);
}

要显示占位符,只需设置 comboBox1.SelectedIndex = -1;

关于c# - 默认组合框第一项与数据库结果混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com