我开发了一款Pocket PC应用程序。 它工作但我想在组合框中添加一个新的(没有数据)行:
SqlCeCommand sql3 = new SqlCeCommand("SELECT (ACM_EMPL.NUM_EMPL + '~' + ACM_EMPL.NOM_EMPL) AS NUM_EMPL FROM ACM_EMPL INNER JOIN ACM_ACT ON ACM_EMPL.NUM_EMPL = ACM_ACT.NUM_EMPL WHERE (ACM_ACT.NUM_ACTIVO = '" + oc.Text + "'AND ACM_ACT.NUM_CIA = '" + CIA.Text + "' AND ACM_ACT.NUM_TIPO = '" + TIPO.Text + "' AND ACM_ACT.SUB_NUM_ACT = '" + SUBNUM.Text + "') ", conn);
sql3.ExecuteNonQuery();
SqlCeDataAdapter cb3 = new SqlCeDataAdapter(sql3);
DataTable dt3 = new DataTable();
cb3.Fill(dt3);
foreach (DataRow dr3 in dt3.Rows)
{
ma.cmbEmpleado.SelectedValue = dr3["NUM_EMPL"].ToString();
}
它显示:
我想添加一个" -select - "或者" "排,我怎么能这样做?我尝试了
dt3.Rows.Add("----------");
以及类似的东西,但它不起作用!。
谢谢
答案 0 :(得分:1)
试试这个:
SqlCeCommand sql3 = new SqlCeCommand("SELECT (ACM_EMPL.NUM_EMPL + '~' + ACM_EMPL.NOM_EMPL) AS NUM_EMPL FROM ACM_EMPL INNER JOIN ACM_ACT ON ACM_EMPL.NUM_EMPL = ACM_ACT.NUM_EMPL WHERE (ACM_ACT.NUM_ACTIVO = '" + oc.Text + "'AND ACM_ACT.NUM_CIA = '" + CIA.Text + "' AND ACM_ACT.NUM_TIPO = '" + TIPO.Text + "' AND ACM_ACT.SUB_NUM_ACT = '" + SUBNUM.Text + "') ", conn);
sql3.ExecuteNonQuery();
SqlCeDataAdapter cb3 = new SqlCeDataAdapter(sql3);
DataTable dt3 = new DataTable();
cb3.Fill(dt3);
foreach (DataRow dr3 in dt3.Rows)
{
ma.cmbEmpleado.Items.Add(dr3["NUM_EMPL"].ToString());
}
ma.cmbEmpleado.Items.Insert(0, "------------");
ma.cmbEmpleado.SelectedIndex = 0;
cb3.Dispose();
dt3.Dispose();
Obs:ma.cmbEmpleado.Items.Add(INDEX,TEXT);
答案 1 :(得分:1)
将行添加到DataTable,然后通过设置其属性将表绑定到ComboBox:
SqlCeCommand sql3 = new SqlCeCommand("SELECT (ACM_EMPL.NUM_EMPL + '~' + ACM_EMPL.NOM_EMPL) AS NUM_EMPL FROM ACM_EMPL INNER JOIN ACM_ACT ON ACM_EMPL.NUM_EMPL = ACM_ACT.NUM_EMPL WHERE (ACM_ACT.NUM_ACTIVO = '" + oc.Text + "'AND ACM_ACT.NUM_CIA = '" + CIA.Text + "' AND ACM_ACT.NUM_TIPO = '" + TIPO.Text + "' AND ACM_ACT.SUB_NUM_ACT = '" + SUBNUM.Text + "') ", conn);
sql3.ExecuteNonQuery();
SqlCeDataAdapter cb3 = new SqlCeDataAdapter(sql3);
DataTable dt3 = new DataTable();
cb3.Fill(dt3);
DataRow row = dt3.NewRow();
row[0] = "";
dt3.Rows.InsertAt(row, 0);
cmb.DisplayMember = "NUM_EMPL";
cmb.ValueMember = "NUM_EMPL";
cmb.DataSource = dt3;
答案 2 :(得分:1)
问题:在您的代码中,您正在调用sql3.ExecuteNonQuery()
,这在填写数据适配器时不是必需的。
在下面提到的代码中使用有效的连接字符串:
string sQuery = @"SELECT (ACM_EMPL.NUM_EMPL + '~' + ACM_EMPL.NOM_EMPL) AS NUM_EMPL FROM ACM_EMPL INNER JOIN ACM_ACT ON ACM_EMPL.NUM_EMPL = ACM_ACT.NUM_EMPL WHERE (ACM_ACT.NUM_ACTIVO = '" + oc.Text + "'AND ACM_ACT.NUM_CIA = '" + CIA.Text + "' AND ACM_ACT.NUM_TIPO = '" + TIPO.Text + "' AND ACM_ACT.SUB_NUM_ACT = '" + SUBNUM.Text + "') ";
string sConnectionString = @"Data Source = C:\Program Files\" +
@"Microsoft SQL Server Compact Edition\v3.5\Samples\" +
@"Northwind.sdf";
using (SqlCeConnection conn = new SqlCeConnection(sConnectionString))
{
SqlCeCommand sql3 = new SqlCeCommand(sQuery, conn);
SqlCeDataAdapter cb3 = new SqlCeDataAdapter(sql3);
DataTable dt3 = new DataTable();
cb3.Fill(dt3);
foreach (DataRow dr3 in dt3.Rows)
{
ma.cmbEmpleado.Items.Add(dr3["NUM_EMPL"].ToString());
}
ma.cmbEmpleado.Items.Insert(0, string.Empty);
ma.cmbEmpleado.SelectedIndex = 0;
}
注意:代码未经过测试。还使用了示例连接字符串。
答案 3 :(得分:1)
试试这个:
SqlCeCommand sql3 = new SqlCeCommand("SELECT (ACM_EMPL.NUM_EMPL + '~' + ACM_EMPL.NOM_EMPL) AS NUM_EMPL FROM ACM_EMPL INNER JOIN ACM_ACT ON ACM_EMPL.NUM_EMPL = ACM_ACT.NUM_EMPL WHERE (ACM_ACT.NUM_ACTIVO = '" + oc.Text + "'AND ACM_ACT.NUM_CIA = '" + CIA.Text + "' AND ACM_ACT.NUM_TIPO = '" + TIPO.Text + "' AND ACM_ACT.SUB_NUM_ACT = '" + SUBNUM.Text + "') ", conn);
sql3.ExecuteNonQuery();
SqlCeDataAdapter cb3 = new SqlCeDataAdapter(sql3);
DataTable dt3 = new DataTable();
cb3.Fill(dt3);
if (dt3.Rows.Count > 0)
{
ma.cmbEmpleado.DataSource = dt;
ma.cmbEmpleado.DataValueField = dt3.Columns["NUM_EMPL"].ToString();
ma.cmbEmpleado.DataTextField = dt3.Columns["NUM_EMPL"].ToString();
}
ma.cmbEmpleado.Items.Insert(0, "---------");
ma.cmbEmpleado.Items[0].Value = "0";