c# - Default combobox first item mixed with database results -
public static void fill_combo(string table, combobox cmb, string columns) { ds = new dataset(); try { conn.open(); da = new sqldataadapter($"select {columns} [{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"); } { if (conn != null) { conn.close(); } } }
hey guys. code above i'm trying results database , bind them combobox, want first item random "select..." isn't in database. in advance.
option 1 - can insert datarow
containing desired values datatable
:
var connection = @"your connection string"; var command = "select column1, column2 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 item"; dt.rows.insertat(row, 0); this.combobox1.datasource = dt; this.combobox1.valuemember = "column1"; this.combobox1.displaymember = "column2";
option 2 - instead of adding null data datatable
, can set dropdownstyle
dropdownlist
, set drawmode
ownerdrawfixed
, handle drawitem
event , draw place holder when selected index -1:
private void combobox1_drawitem(object sender, drawitemeventargs e) { var combo = sender combobox; var text = "select 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); }
to show place holder, it's enough set combobox1.selectedindex = -1;
Comments
Post a Comment