以前是做web的,今天第一次做winform,对里面的gridview还不熟。我在gridview里面添加了2列,从Excel里面取数据绑定到gridview,但是数据并没有绑定到我添加的那两列里面,而是自己新增了两列,这个问题应该怎么解决,麻烦各位了。

解决方案 »

  1.   

      private void ManageUser_Load(object sender, EventArgs e)
            {
                BindList();
            }
            DataGridViewButtonColumn insertbutton;
            DataSet ds = null;
            BindingSource bd = new BindingSource();
            private void BindList()
            {
                connstr = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Application.StartupPath + "\\" + "Exam.mdb";
                string sql = "select * from users where 1=1 ";
                if (textBox1.Text.Trim() != "")
                {
                    sql += " and uname like '%" + textBox1.Text.Trim() + "%'";
                }
                sql += "order by id desc";
                ds = OleDbHelper.ExecuteDataset(connstr, CommandType.Text, sql);
                if (ds != null)
                {
                    dataGridView1.Columns.Clear();
                    DataTable dt = ds.Tables[0];
                    bd.DataSource = dt;
                    dataGridView1.DataSource = bd;
                    dataGridView1.Columns[0].HeaderText = "编号";
                    dataGridView1.Columns[1].HeaderText = "用户名";
                    dataGridView1.Columns[2].HeaderText = "密码";
                    dataGridView1.Columns[3].HeaderText = "创建时间";
                    insertbutton = new DataGridViewButtonColumn();
                    insertbutton.Text = "删除";
                    insertbutton.Name = "Delete";
                    insertbutton.Width = 60;
                    insertbutton.UseColumnTextForButtonValue = true;
                    dataGridView1.Columns.Add(insertbutton);
                    dataGridView1.Columns[4].HeaderText = "操作";                //dataGridView1.Rows.Remove(this.dataGridView1.CurrentRow);                dataGridView1.Width = 600;
                       //dataGridView1.data
                }
            }        private void button1_Click(object sender, EventArgs e)
            {
                BindList();
            }        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex] == insertbutton && e.RowIndex > -1)
                {
                    DialogResult result = MessageBox.Show("您确定要删除吗?", "警告", MessageBoxButtons.OKCancel);
                    if (result == System.Windows.Forms.DialogResult.OK)
                    {
                        string delsql = "delete from users where id=" + dataGridView1[0, e.RowIndex].Value.ToString() + "";
                        int count = OleDbHelper.ExecuteNonQuery(connstr, CommandType.Text, delsql);
                        if (count < 1)
                        {
                            MessageBox.Show("删除失败");
                        }
                    }
                    BindList();
                }
            }        private void first_Click(object sender, EventArgs e)
            {
                bd.Position = 0;
            }        private void prior_Click(object sender, EventArgs e)
            {
                bd.Position--;
            }        private void next_Click(object sender, EventArgs e)
            {
                bd.Position++;
            }        private void end_Click(object sender, EventArgs e)
            {
                bd.Position = ds.Tables[0].Rows.Count - 1;
            }
     
      

  2.   

                static public DataSet ExcelToDataSet(string filename)
            {
                DataSet ds;
                string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                "Extended Properties=Excel 8.0;" +
                                "data source=" + filename;
                OleDbConnection myConn = new OleDbConnection(strCon);
                string strCom = " SELECT * FROM [Sheet1$]";
                myConn.Open();
                OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
                ds = new DataSet();
                myCommand.Fill(ds);
                myConn.Close();
                return ds;
            }
              private void Querybtn_Click(object sender, EventArgs e)
            {
                if (txtFileName.Text != "")
                {
                    DataSet ds = ExcelToDataSet(txtFileName.Text);//txtFileName.Text为文件路径                gvExcel.DataSource = ds.Tables[0];   
                }         
            }
      

  3.   

    绑定代码没问题啊,Girdview 他有个自动生成列的 你设置为flase看看
      

  4.   

    现在有新问题了,我把自动生成列的属性设置成FALSE后,数据绑不上去了this.gvExcel.AutoGenerateColumns = false; 怎么回事