新增、删除、修改记录后,ListBox为什么不刷新
rolt 2011-04-12 08:14:51 界面是Winform,一个Listbox放记录的列表,新增、修改或删除后,重新加载记录到列表,
加载记录到ListBox的代码如下,如果数据库是SQL Server,下面的代码没问题,
SqlConnection conn=new SqlConnection("server=server2;uid=gggg;pwd=hhhhh;database=mydatabase");
conn.Open();
SqlCommand cmd=new SqlCommand("取最近联系人",conn);
cmd.CommandType=CommandType.StoredProcedure;
listContact.BeginUpdate();
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds);
listContact.DataSource = ds.Tables[0];
listContact.DisplayMember="姓名组织";
listContact.ValueMember="联系人_ID";
listContact.EndUpdate();
====如果数据库换成Access 2010,不管如何加载,ListBox总是不刷新,还是显示新增或删除前的记录。打开access看表中记录已经更新。关掉ListBox所在窗体再打开,才能看到刷新。从Access加载到ListBox代码如下:
DataTable table;
OleDbConnection odcConnection;
OleDbCommand odCommand;
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=" + "c:\\aaaaaaaaaaa.accdb";
odcConnection = new OleDbConnection(strConn);
odcConnection.Open();
odCommand = odcConnection.CreateCommand();
odCommand.CommandText = "SELECT 事件类别_ID, 名称 FROM 事件类别 order by 名称";
listBox1.BeginUpdate();
OleDbDataAdapter da = new OleDbDataAdapter(odCommand);
table = new DataTable();
da.Fill(table);
listBox1.DataSource = table;
listBox1.DisplayMember = "名称";
listBox1.ValueMember = "事件类别_ID";
listBox1.EndUpdate();
listBox1.Refresh();
-------------
试过先把DataSource 置为空,再加载也不行。以前没用过OleDbDataAdapter,是这个东西的问题吗?