我在我的Windows应用程序中使用Combobox并将值绑定到数据库中的组合框,如下所示
public void LoadDatsbaseNames()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlDataAdapter da = new SqlDataAdapter("SELECT name FROM sys.databases ORDER BY name", connection))
{
DataTable dt = new DataTable();
da.Fill(dt);
DataRow dr;
dr = dt.NewRow();
dr.ItemArray = new object[] { 0, "---Select--" };
dt.Rows.InsertAt(dr, 0);
cbDBName.DisplayMember = "name";
cbDBName.DataSource = dt;
connection.Close();
}
}
}
但是上面的方法显示错误
输入数组比此表中的列数长。
答案 0 :(得分:2)
如果您只想绑定组合框,则无需创建DataRow,因为DataTable已经填充了数据,您只需将其与组合框绑定。
using (SqlDataAdapter da = new SqlDataAdapter("SELECT name FROM sys.databases ORDER BY name", connection))
{
DataTable dt = new DataTable();
da.Fill(dt);
cbDBName.DisplayMember = "name";
cbDBName.DataSource = dt;
connection.Close();
}
此外,您无需手动关闭连接,因为您正在使用using statement
它将处理此问题。
答案 1 :(得分:0)
private void BindVendorDDL()
{
ddlVendor.Items.Clear();
DataTable dt = new DataTable();
dt = bl.BindCompanyDLL();
if (dt.Rows.Count > 0)
{
ddlVendor.Text = "--Select--";
for (int i = 0; i < dt.Rows.Count; i++)
{
ddlVendor.Items.Add(dt.Rows[i]["Vendor_name"].ToString());
}
}
}