public partial class Form1 : Form
    {
        string str = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\\Documents and Settings\\王金刚\\桌面\\报修次数.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\" ";
        public Form1()
        {
            InitializeComponent();
        }        DataSet ds=new DataSet();
        private void Form1_Load(object sender, EventArgs e)
        {
            OleDbConnection con;
            OleDbDataAdapter myadapter;
            con = new OleDbConnection(str);
            try
            {        
                con.Open();
                myadapter = new OleDbDataAdapter("select * from [Sheet4$]", con);
                myadapter.Fill(ds, "ds");
                int Rcount = ds.Tables["ds"].Rows.Count;
                for (int i = 1; i <5; i++)
                {
                    string Rstr = ds.Tables["ds"].Rows[i][0].ToString();
                    DataTable dtr= new DataTable();
                    DataTable dt = MysqlDA.ExecDT("select di,UserAccount,UserName,UserAddress,UserPhone From RepareUserInfo where UserAccount='" + Rstr + "' limit 0, 1");
                    DataRow dr;
                    dr=dtr.NewRow();
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        dtr.Columns.Add(new DataColumn(dt.Columns[j].ColumnName.ToString(), typeof(string)));
                        dr[j] = dt.Rows[0][j].ToString();
                    }
                    dtr.Rows.InsertAt(dr, i-1);
                    dtr.AcceptChanges();
                    dataGridView1.DataSource = dtr;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally 
            {
                con.Close();
            } 
        }
    }
为什么插入是可以,但是总是一行。为什么老是替掉前面的数据。

解决方案 »

  1.   

    dtr.Rows.InsertAt(dr, i-1); 
    换成这样???
    i--;
    dtr.Rows.InsertAt(dr);
      

  2.   

    dtr.Rows.InsertAt(dr);
    这个是不对的。少一个参数啊。
      

  3.   

    呵呵。自己搞定。原来是这样。你们把我贴出来的代码没有看啊。
        public partial class Form1 : Form 
        { 
            string str = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\\Documents and Settings\\王金刚\\桌面\\报修次数.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\" "; 
            public Form1() 
            { 
                InitializeComponent(); 
            }         DataSet ds=new DataSet(); 
            private void Form1_Load(object sender, EventArgs e) 
            { 
                OleDbConnection con; 
                OleDbDataAdapter myadapter; 
                con = new OleDbConnection(str); 
                try 
                {        
                    con.Open(); 
                    myadapter = new OleDbDataAdapter("select * from [Sheet4$]", con); 
                    myadapter.Fill(ds, "ds"); 
                    int Rcount = ds.Tables["ds"].Rows.Count; 
                    for (int i = 1; i <5; i++) 
                    { 
                        string Rstr = ds.Tables["ds"].Rows[i][0].ToString(); 
                        DataTable dtr= new DataTable(); 
                        DataTable dt = MysqlDA.ExecDT("select di,UserAccount,UserName,UserAddress,UserPhone From RepareUserInfo where UserAccount='" + Rstr + "' limit 0, 1"); 
                        DataRow dr; 
                        dr=dtr.NewRow(); 
                        for (int j = 0; j < dt.Columns.Count; j++) 
                        { 
                            dtr.Columns.Add(new DataColumn(dt.Columns[j].ColumnName.ToString(), typeof(string)));                         dr[j] = dt.Rows[0][j].ToString(); 
                        } 
                        dtr.Rows.InsertAt(dr, i-1); 
                        dtr.AcceptChanges(); 
                        dataGridView1.DataSource = dtr; 
                    } 
                } 
                catch (Exception ex) 
                { 
                    throw new Exception(ex.Message); 
                } 
                finally 
                { 
                    con.Close(); 
                } 
            } 
        } 
    红色部分有问题。