我写了一段在DataGrideView里绑定CommBox的代码!为什么总System.FormatException:DataGridViewComboxBoxCell值无效。的错误请各位前辈指正。
DataGridViewComboBoxColumn cmb_Unit = new DataGridViewComboBoxColumn();
private DataTable GetSelecttable_condition(string Sql)
{
DataTable dt = new DataTable();
try
{
SqlConnection conn = new SqlConnection("server=192.168.1.58;user id=sa;password=sa;database=Business");
conn.Open(); //创建SqlCommand对象
SqlCommand cmd = new SqlCommand(Sql, conn);
cmd.CommandType = CommandType.Text; SqlDataReader reader = null;
reader = cmd.ExecuteReader();
dt.Load(reader);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return dt;
} private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("unit"); DataRow rw = dt.NewRow();
rw["unit"] = 2;
dt.Rows.Add(rw);
cmb_Unit.DataPropertyName = "unit"; //这个是对应选择的编号
cmb_Unit.DisplayMember = "unitname"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.ValueMember = "id"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.HeaderText = "单位";
cmb_Unit.DataSource = GetSelecttable_condition("select id,unitname from sys_unit"); this.dataGridView1.Columns.AddRange(new DataGridViewColumn[] { cmb_Unit });
this.dataGridView1.DataSource = dt;
}CREATE TABLE [sys_unit] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[unitname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_sys_unit] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GOinsert into sys_unit(unitname) values("个");
insert into sys_unit(unitname) values("把");
insert into sys_unit(unitname) values("双");
insert into sys_unit(unitname) values("包");CREATE TABLE [sys_order_ware] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[unit] [int] NULL ,
CONSTRAINT [PK_sys_order_ware] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GOinsert into sys_order_ware(unit) values(2);
代码完全可以运行!请各位前辈指正!
DataGridViewComboBoxColumn cmb_Unit = new DataGridViewComboBoxColumn();
private DataTable GetSelecttable_condition(string Sql)
{
DataTable dt = new DataTable();
try
{
SqlConnection conn = new SqlConnection("server=192.168.1.58;user id=sa;password=sa;database=Business");
conn.Open(); //创建SqlCommand对象
SqlCommand cmd = new SqlCommand(Sql, conn);
cmd.CommandType = CommandType.Text; SqlDataReader reader = null;
reader = cmd.ExecuteReader();
dt.Load(reader);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return dt;
} private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("unit"); DataRow rw = dt.NewRow();
rw["unit"] = 2;
dt.Rows.Add(rw);
cmb_Unit.DataPropertyName = "unit"; //这个是对应选择的编号
cmb_Unit.DisplayMember = "unitname"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.ValueMember = "id"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.HeaderText = "单位";
cmb_Unit.DataSource = GetSelecttable_condition("select id,unitname from sys_unit"); this.dataGridView1.Columns.AddRange(new DataGridViewColumn[] { cmb_Unit });
this.dataGridView1.DataSource = dt;
}CREATE TABLE [sys_unit] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[unitname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_sys_unit] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GOinsert into sys_unit(unitname) values("个");
insert into sys_unit(unitname) values("把");
insert into sys_unit(unitname) values("双");
insert into sys_unit(unitname) values("包");CREATE TABLE [sys_order_ware] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[unit] [int] NULL ,
CONSTRAINT [PK_sys_order_ware] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GOinsert into sys_order_ware(unit) values(2);
代码完全可以运行!请各位前辈指正!
解决方案 »
- 在程序中用代码改变了鼠标指针的样式,然后使用鼠标的时候发现鼠标指针的位置和真实位置有偏差,造成的结果就是点击这个按钮,结果是另一个按钮响应
- 在派生类的无参数构造函数中显示调用基类的带参数构造函数
- 请教HTMLDocument如何遍历子无素
- 正则表达式 找出平局的比分
- 两天速成的方法?
- c# 对图像的一个旋转矩形区域进行调整
- 读取字符串?
- 关于页面刷新的问题
- C#中如何定义一个新的数据类型?
- 求助:一种算法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 关于DataGridview 中下拉框赋值的问题?
- 急啊,高手帮我看看几行代码
[id] [int] IDENTITY (1, 1) NOT NULL ,
[unitname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_sys_unit] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GOinsert into sys_unit values('个')
insert into sys_unit values('把')
insert into sys_unit values('双')
insert into sys_unit values('包')CREATE TABLE [sys_order_ware] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[unit] [int] NULL ,
CONSTRAINT [PK_sys_order_ware] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GOinsert into sys_order_ware(unit) values(2)
DatagridViewComboxColumn cmbox = Datagridview.Columns["COmbox控件的Name"] as DatagridViewComboxColumn ; cmbox.DataSource = 下框的数据源;
cmbox.DataPropertyName= datagrid的数据源的要绑定的列;
cmbox.d...Member="下拉框显示的TEXT";
cmbox.ValueMember="隐藏的值";
DataGridViewComboBoxColumn csex = new DataGridViewComboBoxColumn();
csex.DataPropertyName = "sSex";
csex.HeaderText = "性别";
DataTable dt = new DataTable();
dt.Columns.Add("sexname");
dt.Columns.Add("sexvalue");
DataRow dr = dt.NewRow();
dr[0] = "男";
dr[1] = "1";
dt.Rows.Add(dr);
DataRow dr1 = dt.NewRow();
dr1[0] = "女";
dr1[1] = "2";
dt.Rows.Add(dr1);
csex.DataSource = dt;
csex.ValueMember = "sexvalue";
csex.DisplayMember = "sexname";
this.datagridview1.Columns.Add(csex);
string[] s = new string[]{"a","b","c"};
obj.Items.AddRange(s);试试这样
{
DataTable dt = new DataTable();
dt.Columns.Add("unit");
//上面一句代码改为dt.Columns.Add("unitname"); DataRow rw = dt.NewRow();
rw["unit"] = 2;
dt.Rows.Add(rw);
cmb_Unit.DataPropertyName = "unit"; //这个是对应选择的编号
//上面一句代码改为cmb_Unit.DataPropertyName = "unitname"; cmb_Unit.DisplayMember = "unitname"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.ValueMember = "id"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.HeaderText = "单位";
cmb_Unit.DataSource = GetSelecttable_condition("select id,unitname from sys_unit"); this.dataGridView1.Columns.AddRange(new DataGridViewColumn[] { cmb_Unit });
this.dataGridView1.DataSource = dt;
}按照我上面的注释的地方改下试试,可能是要与select id,unitname from sys_unit的字段名一致才行
GetSelecttable_condition("select id,unitname from sys_unit");
这句话是查出所有下拉框里面的内容。DataTable dt = new DataTable();
dt.Columns.Add("unit"); DataRow rw = dt.NewRow();
rw["unit"] = 2;
dt.Rows.Add(rw);而这个DataTable它的值只有一个,是指定这个下拉框所选定的内容的问题。
cmb_Unit.DataPropertyName = "unit"; //这个是对应选择的编号
cmb_Unit.DisplayMember = "unitname"; //这里定义在下拉框里下拉列表的显示的name
cmb_Unit.ValueMember = "id"; //这里定义在下拉框里下拉列表的显示的name这些对应的值应该如何获取!我如何知道用户选择了哪个!用户选择之后,它所对应的ID又是哪个!我又该如何处理!请指教!