insert命令参数后,文本框不刷新

时间:2013-04-08 17:25:31

标签: c# winforms ms-access

Access 2003,VS 2010 C#,Windows窗体应用程序

我认为我遇到了这个问题,因为我的文本框等是当前数据的数据绑定所以问题是如何让绑定源读取新数据而不必关闭并重新启动应用程序?没有错误。我尝试了很多种方法,但是当应用程序当前正在运行时它们都没有显示新的记录,所以我做错了什么?

My Form Load看起来像这样..

 this.fnDisplayPosition();

 bdSource = new BindingSource();
 string sql = "SELECT * FROM Table1";
 OleDbDataAdapter da = new OleDbDataAdapter(sql, myCon);
 DataSet ds = new DataSet();
 da.Fill(ds, "Table1");

 bdSource.DataSource = ds;
 //  this.table1BindingSource.AddNew();
 txtID.DataBindings.Add("Text", bdSource, "ID");
 cBAG.DataBindings.Add("Text", bdSource, "AgeGroup");
 cBGender.DataBindings.Add("Text", bdSource, "Gender");

fnDisplayPosition方法读取与数据绑定绑定的记录数...

this.label7.Text = this.table1BindingSource.Position + 1 + " of " +   
this.table1BindingSource.Count;

例如,这是我的导航按钮..

 this.table1BindingSource.MoveFirst();
 this.fnDisplayPosition();

以下是我的插入方法,我可以添加我在this网站上使用过的新记录...

OleDbDataAdapter da = new OleDbDataAdapter(@"INSERT INTO Table1 (ID, AgeGroup, Gender)VALUES
(@txtID, @cBAG, @cBGender", myCon);

       string qry = @"select * from Table1";
       string upd = @"INSERT INTO Table1 (ID, AgeGroup, Gender)   
                      VALUES(@txtID, @cBAG, @cBGender)";

 myCon.Open();

       try
         {
           da.SelectCommand = new OleDbCommand(qry, myCon);
           DataSet ds = new DataSet();
           da.Fill(ds, "Table1");

           DataTable dt = ds.Tables["Table1"];

           DataRow newRow = dt.NewRow();
           newRow["ID"] = txtID;
           newRow["AgeGroup"] = cBAG;
           newRow["Gender"] = cBGender;
           dt.Rows.Add(newRow);

           OleDbCommand cmd = new OleDbCommand(upd, myCon);

           cmd.Parameters.AddWithValue("@ID", txtID.Text);
           cmd.Parameters.AddWithValue("@AgeGroup", cBAG.Text);
           cmd.Parameters.AddWithValue("@Gender", cBGender.Text);

           da.InsertCommand = cmd;
           da.Update(ds, "Table1");
           da.Fill(ds, upd);
           } catch(Exception ex) {
        Console.WriteLine("Error: " + ex);
     } finally {
       myCon.Close();
     }

1 个答案:

答案 0 :(得分:0)

经过多次试验和错误后,我发现了为什么会发生这种情况。 tableadapters和绑定源的使用与其他类似的文本框相关联不是可行的方法。你必须硬编码。因此,要查看数据反映是否更新,删除或添加新记录而不关闭和重新启动应用程序,您不能使用tableadapters或绑定源。要清楚地了解我在说什么,请使用此网站here。使用什么连接或如何使用命令参数无关紧要。好吧无论如何这只是我的意见。