我正在开发一个C#窗口应用程序,我在其中使用datagridview来显示数据库中的数据,我使用相同的Datagridview来编辑,删除,插入到数据库中。
我的项目用户的主要要求是选择组合框中的项目,并根据组合框中项目的选择,我想更改datagridview的数据源。
但是当我试图这样做时,我得到例外,
无法创建<TableName>
的子列表
在2-3次尝试之后,它给出了另一个例外:
SystemIndexOutOfBoundException:索引0没有值
我在ComboBox中选择项目的代码是:
public void mgm_quarter_month_cb_SelectedIndexChanged(object sender, EventArgs e)
{
if (mgm_quarter_month_cb.SelectedItem=="Quarter")
{
try
{
MainForm mf = new MainForm();
mgm_dgv.DataSource = null;
mgm_dgv.DataMember = "";
mgm_dgv.Refresh();
string query = "select * from Demo";
mgm_quarter_table = getdata(query); // GetData gets data from database
mgm_dgv = setquarterwisedatagridview(mgm_dgv); //Arrange DatagridView on Tabpage
mgm_dgv.DataSource = mgm_quarter_table;
mgm_dgv.DataMember = "Demo";
mf.mgm_tabpage.Controls.Add(mgm_dgv);
mgm_quarter_cb.Enabled = false;
mgm_month_cb.Enabled = false;
}
catch (Exception exc)
{
MessageBox.Show(""+exc);
}
}
else if(mgm_quarter_month_cb.SelectedItem=="Month")
{
try
{
MainForm mf = new MainForm();
mgm_dgv.DataSource = null;
mgm_dgv.DataMember = "";
mgm_dgv.Refresh();
string query = "select * from Demo2";
mgm_month_table = getdata(query);
mgm_dgv = setmonthwisedatagridview(mgm_dgv);
mgm_dgv.DataSource = mgm_month_table;
mgm_dgv.DataMember = "Demo2";
mf.mgm_tabpage.Controls.Add(mgm_dgv);
mgm_quarter_cb.Enabled = true;
mgm_month_cb.Enabled = true;
}
catch (Exception exc)
{
MessageBox.Show(""+exc);
}
}
}
**从数据库中获取数据的方法**
public DataTable getdata(string text)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Users\Vinayak\Documents\Scorecard.mdb");
DataTable dt1 = new DataTable();
string query = text;
OleDbCommand com = new OleDbCommand(query, con);
com.CommandType = CommandType.Text;
com.CommandTimeout = 1200;
con.Open();
OleDbDataAdapter adpt = new OleDbDataAdapter(com);
adpt.Fill(dt1);
con.Close();
con.Dispose();
return dt1;
}
如果我做错了,请告诉我。