C#怎么实现 DataGridView分页功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#怎么实现 DataGridView分页功能相关的知识,希望对你有一定的参考价值。
突然无聊想到的 蛮好奇的
DataGridView 本身就具有分页 可以直接使用的 也可以不用那个分页 那就自己写个 用DataGridView的DataSource来绑定一个DataTable ,DataTable 主要是查询某个区间的数据,主要有几个参数 1 RowCount 一次返回多少行 PageSize一页几个, CurragePage第几页 通过SQl语句 Select top RowCount * from tableName Where Id not in(Select top (CurragePage-1)*PageSize Id form tableName) and 查询条件 大致就这样了 细节地方多注意就是 不懂可以找我 我基本每天都在线的 参考技术A private void Form1_Load(object sender, EventArgs e)// TODO: 这行代码将数据加载到表“myDBDataSet.login”中。您可以根据需要移动或移除它。
this.loginTableAdapter.Fill(this.myDBDataSet.login);//自动添加数据时自动生成的
int intMod, dgr;
dataGridView2.ScrollBars = System.Windows.Forms.ScrollBars.None;//先让垂直滚动条消失 dgr = dataGridView2.RowCount-1;//取出DGV的行数,为什么要减一是因为它总是多出一行给你编辑的所以那行也占用一行的空间 if (dgr % 10 == 0) //进行取模 intMod = 0;
else
intMod = 1;
for (int i = 1; i <= dgr / 10+intMod; i++) //主要时这个for循环将表一共分为几页添加到comboBox
comboBox2.Items.Add("第" + i + "页");
comboBox2.SelectedIndex = 0; //默认选中第一个 然后在comboBox1_SelectedValueChanged事件里面添加下面代码private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
dataGridView2.FirstDisplayedScrollingRowIndex = comboBox2.SelectedIndex * 10;
参考技术B 刚做好的 html代码: <html xmlns=" http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>部门信息选择</title>
<link href="Image/Main.css" rel="stylesheet" type="text/css" />
<%-- //屏蔽右键菜单
--%> <script type="text/javascript"> </script>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: left">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px"
CellPadding="2" GridLines="None" OnPageIndexChanging="GridView1_PageIndexChanging"
OnRowCommand="GridView1_RowCommand" PageSize="5" ForeColor="Black">
<FooterStyle BackColor="Tan" />
<Columns>
<asp:BoundField DataField="SuppliersID" HeaderText="供应商编号" InsertVisible="False"
ReadOnly="True" SortExpression="DepartmentID" />
<asp:ButtonField ButtonType="Image" CommandName="select" HeaderText="请选择" ImageUrl="~/Image/option.gif"
Text="选择" />
</Columns>
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:GridView>
<asp:Label ID="Label1" runat="server"></asp:Label>
<input id="hiddenfm" runat="server" type="hidden" /></div>
</form>
</body>
</html>
C#代码:using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using SqlHelper;
public partial class SuppliersIDSelect : System.Web.UI.Page
Helper he = new Helper();//这是链接数据库的代码,见后面 static int i = 1;//页数 protected void Page_Load(object sender, EventArgs e)
GridView1.DataSource = he.BindSuppliersInfo();
if (!IsPostBack)
this.hiddenfm.Value = (string)Request["name"]; Label1.Text = "当前页码是" + Convert.ToString(GridView1.PageIndex + i); GridView1.DataBind();
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
GridView1.PageIndex = e.NewPageIndex; Label1.Text = "当前页码是" + Convert.ToString(GridView1.PageIndex + i); GridView1.DataBind();
Help.cs代码:public DataSet BindSuppliersInfo()
String sql = "select * from Suppliers"; SqlDataAdapter da = new SqlDataAdapter(sql, conn); conn.Open(); ds = new DataSet(); da.Fill(ds); conn.Close(); return ds;
winform中的DataGridView如何实现分页(C#)
能跟讲讲实现思路吗 不要代码
常用分页一般有两种一是在数据库写存储过程,或利用sql语句,每次只取出N条数据。
二是将数据一次性全取出来,然后利用程序来进行分页。
第一种在数据量比较大的时候性能好点。
希望你能明白。 参考技术A 这个要添加 DataGridView 控件的功能
写一个“用户控件”,继承DataGridView
public partial class UserControl1 : DataGridView
然后再添加一些翻页的方法 参考技术B 应该在后台就实现分页。DataGridView显示分页数据就可以了。 参考技术C http://www.cnblogs.com/sayu115/archive/2007/10/12/922115.html 参考技术D 你可以再视图下面放按钮,上一页下一页这些,然后放lable用于显示当前页和总页数也方便以后获取当前页数
方法一:查询出所有数据,获取你数据源的总行数,然后用你的总行数除以一行显示的数量, 得出的就是你的总页数
第一次进入当前页肯定是1在绑定数据数据时根据当前页和行数从你的数据源中取值,然后将取出的数据绑定你的DataGridView
在点击下一页或者上一页这些时++或--你的当前页,当然最后一页和第一页的时要进行判断的,否则就要出错了
方法二:写一个存储过程,传入当前页和每页行数,sql和oracle等数据库都有标识列,以此作为条件,只取出一部分数据绑定到DataGridView中,每一次点击按钮时,调用该存储过程获取数据,优势是在大数据量时查询效率比第一种方法效率高,并且在数据结构发生改变时方便维护,可以只修改存储过程
以上是关于C#怎么实现 DataGridView分页功能的主要内容,如果未能解决你的问题,请参考以下文章
winform中的DataGridView如何实现分页(C#)