DataGridview是要进行显示的控件
BindingNavigator是导航控件,可以对Datagridview中的数据进行操作
BindingSource是数据源,用来绑定数据库或者表格
下边是图像化界面
上边的导航键从红色X以前的按键无需进行编写代码,之后的要进行编写代码进行实现,后边的标签、多选框、文本框以及按钮都是从黄色+号衍生过来的,点击加号即可自行添加想要的东西。至于上边导航键中的属性名称,可以自行对应下边的代码中,亲测有效。
/// <summary>
/// 系统列表导航键
/// </summary>
#region
/// <summary>
/// 对?/总页数进行赋值(?)
/// </summary>
private void ComboBoxValue()
{
for (int i = 1; i < _pageCount + 1; i++)
{
txtCurrentPage.Items.Add(i);
}
}
/// <summary>
/// 每页显示记录数
/// </summary>
private int _pageSize = 100;
/// <summary>
/// 每页显示记录数
/// </summary>
public int PageSize
{
get { return _pageSize; }
set { _pageSize = value; }
}/// <summary>
/// 总记录数
/// </summary>
private int _nMax = 0;
/// <summary>
/// 总记录数
/// </summary>
public int NMax
{
get { return _nMax; }
set { _nMax = value; }
}/// <summary>
/// 页数=总记录数/每页显示记录数
/// </summary>
private int _pageCount = 0;
/// <summary>
/// 页数=总记录数/每页显示记录数
/// </summary>
public int PageCount
{
get { return _pageCount; }
set { _pageCount = value; }
}/// <summary>
/// 当前页号
/// </summary>
private int _pageCurrent = 0;
/// <summary>
/// 当前页号
/// </summary>
public int PageCurrent
{
get { return _pageCurrent; }
set { _pageCurrent = value; }
}/// <summary>
/// 当前记录行
/// </summary>
private int _nCurrent = 0;
/// <summary>
/// 当前记录行
/// </summary>
public int NCurrent
{
get { return _nCurrent; }
set { _nCurrent = value; }
}
/// <summary>
/// 设置数据源
/// </summary>
private DataTable dataSource = null;
/// <summary>
/// 设置数据源
/// </summary>
public DataTable DataSource
{
get { return dataSource; }
set { dataSource = value; }
}
//private DataSet ds = null;
public void InitDataSet(DataTable dt)
{
this.dataSource = dt;
this._nMax = this.dataSource.Rows.Count;
//计算总页数
this._pageCount = _nMax / _pageSize;
//
if ((_nMax % _pageSize) > 0)
_pageCount++;
_pageCurrent = 1;
_nCurrent = 0;
FillData();
}
/// <summary>
/// 填充数据
/// </summary>
private void FillData()
{
//当前页面开始记录行
int nStartPos = 0;
//当前页面结束记录行
int nEndPos = 0;
DataTable dtTemp = this.dataSource.Clone();
if (this._pageCurrent == this._pageCount)
nEndPos = _nMax;
else
nEndPos = this._pageCurrent * this._pageSize;
nStartPos = this._nCurrent;
lblMaxPage.Text = this._pageCount.ToString();//页数
txtCurrentPage.Text = this._pageCurrent.ToString();//当前页
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(this.dataSource.Rows[i]);
_nCurrent++;
}
bindingSource1.DataSource = dtTemp;//绑定数据源,管控TMSI表格
dgvSoundResult.DataSource = bindingSource1;
bindingNavigator1.BindingSource = bindingSource1;
}
/// <summary>
/// 导航键
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bindingNavigator1_ItemClicked_1(object sender, ToolStripItemClickedEventArgs e)
{
switch (e.ClickedItem.Text)
{
case "移到上一条记录":
//FillData();
break;
case "移到下一条记录":
//FillData();
break;
case "上一页":
lblMsg1.Enabled = true;
if (this._pageCurrent == 1)
{
MessageBox.Show("已经是第一页,请点击“下一页”查看!");
// lblMsg.Text = "已经是第一页,请点击“下一页”查看!";
return;
}
else
{
_pageCurrent--;
this._nCurrent = this._pageSize * (_pageCurrent - 1);
FillData();
}
break;
case "下一页":
lblMsg.Enabled = true;
if (this._pageCurrent == _pageCount)
{
lblMsg1.Enabled = false;
MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
//lblMsg1.Text = "已经是最后一页,请点击“上一页”查看!";
return;
}
else
{
_pageCurrent++;
this._nCurrent = this._pageSize * (_pageCurrent - 1);
FillData();
}
break;
}
}
/// <summary>
/// 跳转
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton10_Click(object sender, EventArgs e)
{
int num = 0;
if (int.TryParse(txtCurrentPage.Text.Trim(), out num) && num > 0)
{
_nCurrent = (num - 1) * 100;
_pageCurrent = num;
FillData();
}
}
/// <summary>
/// 跳转页数限制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtCurrentPage_TextChanged_1(object sender, EventArgs e)
{
int num = 0;
if (int.TryParse(txtCurrentPage.Text.Trim(), out num) && num > 0)
{
if (num > _pageCount)
{
txtCurrentPage.Text = _pageCount.ToString();
}
}
}
#endregion
在想要进行显示时,只需要调用 public void InitDataSet(DataTable dt)这个方法即可,里边的参数是一张表,如果这张表是从数据库取出来的,则会省掉很多事。如果没有数据库,则要先在本地建立一张表,显示的字段初始化时要加载到datagridview中,这种从数据源取数据进行显示,不允许datagridview刚开始就把字段写死在首行,字段名是自行动态加载进来的,而且过程中不允许datagridview在代码中自动添加行,只能刷新数据表取数据。所以假如想要刚进入系统的时候,就看到字段显示在列表中,就必须初始化datagridview,代码如下,只是上述代码中的一部分即可实现功能。
/// <summary>
/// 系统列表最开始进行初始化
/// </summary>
/// <param name="dt"></param>
#region
public void InitData(DataTable dt)
{
this.dataSource = dt;
this._nMax = this.dataSource.Rows.Count;
//计算总页数
this._pageCount = _nMax / _pageSize;
//
if ((_nMax % _pageSize) > 0)
_pageCount++;
_pageCurrent = 1;
_nCurrent = 0;
InitalFillData();
}
/// <summary>
/// 填充数据
/// </summary>
private void InitalFillData()
{
//当前页面开始记录行
int nStartPos = 0;
//当前页面结束记录行
int nEndPos = 0;
DataTable dtTemp = this.dataSource.Clone();
if (this._pageCurrent == this._pageCount)
nEndPos = _nMax;
else
nEndPos = this._pageCurrent * this._pageSize;
nStartPos = this._nCurrent;
lblMaxPage.Text = this._pageCount.ToString();//页数
txtCurrentPage.Text = this._pageCurrent.ToString();//当前页
bindingSource1.DataSource = dtTemp;//
dgvSoundResult.DataSource = bindingSource1;
bindingNavigator1.BindingSource = bindingSource1;
}
关于绑定数据源显示列表就先说到这里,欢迎大家批评指正。