获取ArgumentException =>无法创建字段问题的子列表

时间:2013-08-06 05:43:57

标签: c#

这是我的Datagridview分页的代码,为什么我在这行代码Child list for field Questions cannot be created.中获取此非Argudeled this.dataGridView1.DataSource = GetCurrentRecords(1, con);的ArgumentException。我哪里出错了

public partial class ShowEngClgList : Form
    {
        OleDbConnection con = null;
        private OleDbCommand cmd1;
        private OleDbCommand cmd2;
        private OleDbDataAdapter adp1 = null;
        DataSet ds;

        private int PageSize = 10;
        private int CurrentPageIndex = 1;
        private int TotalPage = 0; 
        public ShowEngClgList()
        {
            InitializeComponent();
            try
            {
                con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb");
                con.Open();
            }
            catch (Exception err)
            {

            }
            cmd1 = new OleDbCommand("Select * from Questions order by QID", con);
            ds = new DataSet();
            adp1 = new OleDbDataAdapter(cmd1);
            adp1.Fill(ds, "Questions");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Questions";

            // WORK IN PAGING FOR DATAGRIDVIEW
            // Get total count of the pages; 
            this.CalculateTotalPages();
            this.dataGridView1.ReadOnly = true;
            // Load the first page of data; 
            this.dataGridView1.DataSource = GetCurrentRecords(1, con);//Getting exception at this line

        }
        private void ShowEngClgList_Load(object sender, EventArgs e)
        {

        }
        private void CalculateTotalPages()
        {
            int rowCount = ds.Tables["Questions"].Rows.Count;
            this.TotalPage = rowCount / PageSize;
            if (rowCount % PageSize > 0) // if remainder is more than  zero 
            {
                this.TotalPage += 1;
            }
        }
        private DataTable GetCurrentRecords(int page, OleDbConnection con)
        {
            DataTable dt = new DataTable();

            if (page == 1)
            {
                cmd2 = new OleDbCommand("Select TOP " + PageSize + " * from Questions ORDER BY QID", con);
            }
            else
            {
                int PreviouspageLimit = (page - 1) * PageSize;

                cmd2 = new OleDbCommand("Select TOP " + PageSize +
                    " * from Questions " +
                    "WHERE QID NOT IN " +
                "(Select TOP " + PreviouspageLimit + " QID from Questions ORDER BY QID) ", con); // +
                //"order by customerid", con);
            }
            try
            {
                // con.Open();
                this.adp1.SelectCommand = cmd2;
                this.adp1.Fill(dt);
            }
            finally
            {
                con.Close();
            }
            return dt;
        }
}

感谢您提前寻求帮助。

1 个答案:

答案 0 :(得分:4)

当我们通过数据集将自定义数据集合绑定到DataGridView时,只需设置数据源,不需要设置数据库。 因此,删除这行代码就是解决问题并且代码正常工作。

dataGridView1.DataMember = "EngColeges";