5

这是我的 Datagridview Paging 代码,为什么我Child list for field Questions cannot be created.在这行代码中没有处理这个 ArgumentException this.dataGridView1.DataSource = GetCurrentRecords(1, con);。我哪里错了

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;
        }
}

提前感谢您的帮助。

4

1 回答 1

5

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

dataGridView1.DataMember = "EngColeges";
于 2013-08-06T09:32:59.523 回答