2010年9月30日 星期四

Winform下comboxBox處理 找出下拉選單對應值

winform下的下拉選單是各很機車的設計..

datasource程式碼
DataTable p_dt = dbHelper.mtdExecuteDataTable(p_exec);
DataRow emptyRow = p_dt.NewRow();
emptyRow["code_desc"] = "";
emptyRow["code_id"] = " ";
p_dt.Rows.InsertAt(emptyRow, 0);
cmbBox_paymentType.DataSource = p_dt;
cmbBox_paymentType.DisplayMember = "code_desc";
cmbBox_paymentType.ValueMember = "code_id";
cmbBox_paymentType.SelectedIndex = 0;

使用非datatable作為來源時,另建一個簡單類別或自訂table設定columns也可
如DataTable dt = new DataTable("tbl");
dt.columns.add("0", Typeof(System.string));
dt.columns.add("1", Typeof(System.string));
DataRow row;
for(int i=0;i<2;i++) {
row = dt.newrow();
row["0"] = i;
row["1"] = i+1;
dt.row.add(row);
}

在已經有資料要挑選正確的項目作為預選項目時
將dropdownobx的items以datarowview處理即可
大致程式碼會如下

if (!string.IsNullOrEmpty(p_bo_tblinvoice_out.code_desc))
{
int i=0;
foreach (DataRowView _drv in cmbBox_paymentType.Items)
{
if (_drv.Row["code_desc"].ToString().Contains(p_bo_tblinvoice_out.code_desc))
cmbBox_paymentType.SelectedIndex = i;
i += 1;
}
}

沒有留言: