这是我在dataGridView里添加新列,列带下拉列表,我现在在dataGridView1.Columns.Insert(0, dgvComboBox);
出问题了,INT不能写1.2.3等等,只能用0。是哪错了?列跑的前面去了。
private void Form1_Load(object sender, EventArgs e)
{
string strCom = "SELECT EMPID,CHINESENAME,POSITION_CODE,DATE_STARTED,DATE_LEFT,STATUS_CODE FROM HR_EMPLOYEE a left outer join HR_DEPARTMENT b on a.DEPTID=b.DEPTNAME";
string strCon = "SELECT DEPTNAME FROM HR_DEPARTMENT";
OracleConnection conn = new OracleConnection("Data Source=orcl;User ID=todai;Password=todai");
conn.Open(); DataGridViewComboBoxColumn dgvComboBox = new DataGridViewComboBoxColumn();
dgvComboBox.DataPropertyName = "DEPTNAME";//
dgvComboBox.HeaderText = "DEPTNAME";
dgvComboBox.DataSource = GetTable(strCon).DefaultView;
dgvComboBox.DisplayMember = "DEPTNAME";//
dgvComboBox.ValueMember = "DEPTNAME";// dataGridView1.Columns.Insert(0, dgvComboBox);
dataGridView1.DataSource = GetTable(strCom).DefaultView;
}
private DataTable GetTable(string sql)
{
using (OracleConnection Oconn = new OracleConnection("Data Source=orcl;User ID=todai;Password=todai"))
{
DataTable dt = new DataTable();
OracleDataAdapter Oda = new OracleDataAdapter(sql, Oconn);
Oda.Fill(dt);
return dt;
}
}
出问题了,INT不能写1.2.3等等,只能用0。是哪错了?列跑的前面去了。
private void Form1_Load(object sender, EventArgs e)
{
string strCom = "SELECT EMPID,CHINESENAME,POSITION_CODE,DATE_STARTED,DATE_LEFT,STATUS_CODE FROM HR_EMPLOYEE a left outer join HR_DEPARTMENT b on a.DEPTID=b.DEPTNAME";
string strCon = "SELECT DEPTNAME FROM HR_DEPARTMENT";
OracleConnection conn = new OracleConnection("Data Source=orcl;User ID=todai;Password=todai");
conn.Open(); DataGridViewComboBoxColumn dgvComboBox = new DataGridViewComboBoxColumn();
dgvComboBox.DataPropertyName = "DEPTNAME";//
dgvComboBox.HeaderText = "DEPTNAME";
dgvComboBox.DataSource = GetTable(strCon).DefaultView;
dgvComboBox.DisplayMember = "DEPTNAME";//
dgvComboBox.ValueMember = "DEPTNAME";// dataGridView1.Columns.Insert(0, dgvComboBox);
dataGridView1.DataSource = GetTable(strCom).DefaultView;
}
private DataTable GetTable(string sql)
{
using (OracleConnection Oconn = new OracleConnection("Data Source=orcl;User ID=todai;Password=todai"))
{
DataTable dt = new DataTable();
OracleDataAdapter Oda = new OracleDataAdapter(sql, Oconn);
Oda.Fill(dt);
return dt;
}
}
没用了。
我写了一个,你看看、 DataTable ta = new DataTable();
DataColumn c = new DataColumn("A");
ta.Columns.Add(c);
for (int i = 0; i < 2; i++)
{
DataRow r = ta.NewRow();
r[0] = i.ToString();
ta.Rows.Add(r); }
DataTable ta1 = new DataTable();
DataColumn c1 = new DataColumn("AB");
DataColumn c2 = new DataColumn("AB1");
DataColumn c3 = new DataColumn("AB2"); ta1.Columns.Add(c1);
ta1.Columns.Add(c2);
ta1.Columns.Add(c3);
for (int i = 0; i < 2; i++)
{
DataRow r = ta1.NewRow();
r[0] = (i+500).ToString();
r[1] = (i+100).ToString();
r[2] = (i+200).ToString(); ta1.Rows.Add(r); }
DataGridViewComboBoxColumn dgvComboBox = new DataGridViewComboBoxColumn();
dgvComboBox.DataPropertyName = "DEPTNAME";//
dgvComboBox.HeaderText = "DEPTNAME";
dgvComboBox.DataSource = ta.DefaultView;
dgvComboBox.DisplayMember = "A";//
dgvComboBox.ValueMember = "A";//
//dataGridView1.Columns.Clear();
dataGridView1.Columns.Insert(0, dgvComboBox);
dataGridView1.DataSource = ta1.DefaultView;
但出现插入索引已超出范围。必须为非负值,并且必须小于或等于大小。参数名: index的错误。
因为如果是0,就加到第一列去了,我想让他成为第三列。
有没有办法,还是本来我就错了。
FROM HR_EMPLOYEE AS a left outer join HR_DEPARTMENT AS b on a.DEPTID=b.DEPTIDinsert不了,是不是因为你insert之前columns里是空的?不是的话,用add什么效果呢?
as貌似我加了就错了,ADD也不行,出3错。
参数“1”: 无法从“int”转换为“string”
参数“2”: 无法从“System.Windows.Forms.DataGridViewComboBoxColumn”转换为“string”
与“System.Windows.Forms.DataGridViewColumnCollection.Add(string, string)”最匹配的重载方法具有一些无效参数
SELECT EMPID,CHINESENAME,POSITION_CODE,DATE_STARTED,DATE_LEFT,STATUS_CODE, b.DEPTNAME
FROM HR_EMPLOYEE AS a left outer join HR_DEPARTMENT AS b on a.DEPTID=b.DEPTID
dataGridView1.Columns.add(dgvComboBox)这样
你直接在界面上编辑,添一个combo的列,调整你想要的列顺序,把DataPropertyName啥的都填上,然后在代码里把combo和grid的DataSource都赋上值就行了,绝对的。