不能在数据绑定的 DataGridView 控件上设置 ColumnCount 属性

   看到一个示例,发现其datagridview控件显示信息的格式比较好看,显示的4列正好部满该控件(后面还有好几个列通过滚动条滚动显示)。但是在我的练习控件中怎么也实现不了这个效果,通过设置 this.dataGridView1.ColumnCount = 4; 提示如标题之错误。

我的数据源如下:

            SqlStr = "select cardid as 编号,name as 姓名,post as 职务,company as 公司名称,mobile as 手机 from users";
            using (OleDbDataAdapter da = new OleDbDataAdapter(SqlStr, Olecon))
            {
                DataTable dt = new DataTable();
                da.Fill(dt);
                DataView dv = new DataView(dt);
                this.dataGridView1.DataSource = dt.DefaultView;

......

找了很久也没有解决的办法,于是迫不得己采取下面这个笨办法:

            int wh = this.dataGridView1.RowHeadersWidth;
            int w0 = this.dataGridView1.Columns[0].Width;
            this.dataGridView1.Columns[1].Width = 60;
            int w1 = this.dataGridView1.Columns[1].Width;
            this.dataGridView1.Columns[2].Width = 120;
            int w2 = this.dataGridView1.Columns[2].Width;
            this.dataGridView1.Columns[3].MinimumWidth = 130;
            this.dataGridView1.Columns[3].Width = this.dataGridView1.Width-wh-w0-w1-w2;

唉,实在很无奈,不知道可有高手给出一个简洁的解决办法啊。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#中的DataGridView件是用于显示和编辑数据的强大工具。要实现分页显示数据,可以通过以下步骤进行操作: 1. 准备数据源:首先,你需要准备一个数据源,可以是数据库中的表、集合或其他数据结构。 2. 设置DataGridView属性:在窗体设计器中,将DataGridView件拖放到窗体上,并设置一些基本属性,如Name、Dock、AutoSizeColumnsMode等。 3. 分页逻辑:实现分页逻辑的关键是确每页显示的数据量和当前页码。你可以义一个变量来保存当前页码,并根据每页显示的数据量计算出总页数。 4. 数据:在窗体加载事件中,将数据DataGridView件上。可以使用DataGridView.DataSource属性数据源与件关联。 5. 分页显示:根据当前页码和每页显示的数据量,从数据源中获取对应的数据,并将其显示在DataGridView件中。可以使用DataGridView.Rows.Clear()方法清空原有数据,然后使用DataGridView.Rows.Add()方法逐行添加新数据。 6. 分页按钮:为了方便用户切换页码,可以添加上一页、下一页等按钮,并在按钮的点击事件中更新当前页码,并重新加载数据。 下面是一个简单的示例代码,演示了如何实现分页显示数据: ```csharp // 义全局变量 int pageSize = 10; // 每页显示的数据量 int currentPage = 1; // 当前页码 int totalPage; // 总页数 List<DataItem> dataSource; // 数据源 // 窗体加载事件 private void Form_Load(object sender, EventArgs e) { // 获取数据源(示例中使用List<DataItem>作为数据源) dataSource = GetData(); // 计算总页数 totalPage = (int)Math.Ceiling(dataSource.Count / (double)pageSize); // 显示第一页数据 ShowData(); } // 显示数据 private void ShowData() { // 清空原有数据 dataGridView.Rows.Clear(); // 计算当前页的起始索引和结束索引 int startIndex = (currentPage - 1) * pageSize; int endIndex = Math.Min(startIndex + pageSize, dataSource.Count); // 添加当前页的数据DataGridView件中 for (int i = startIndex; i < endIndex; i++) { DataItem item = dataSource[i]; dataGridView.Rows.Add(item.Column1, item.Column2, item.Column3); } // 更新分页信息 lblPageInfo.Text = $"第 {currentPage} 页 / 共 {totalPage} 页"; } // 上一页按钮点击事件 private void btnPrevious_Click(object sender, EventArgs e) { if (currentPage > 1) { currentPage--; ShowData(); } } // 下一页按钮点击事件 private void btnNext_Click(object sender, EventArgs e) { if (currentPage < totalPage) { currentPage++; ShowData(); } } // 获取数据源(示例方法,你需要根据实际情况修改) private List<DataItem> GetData() { // 从数据库或其他数据源中获取数据,并返回一个List<DataItem>对象 // 这里只是一个示例,你需要根据实际情况修改 List<DataItem> data = new List<DataItem>(); // ... return data; } ``` 这是一个简单的分页显示数据的示例,你可以根据自己的需求进行修改和扩展。希望对你有帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值