C# 利用Datagridview、BindingNavigator、BindingSource自動顯示資料
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;
}
關於繫結資料來源顯示列表就先說到這裡,歡迎大家批評指正。
相關文章
- DataGridView清除顯示的資料、設定右鍵選單詳解View
- winform的bindingNavigator上按鈕顯示問題ORM
- C# dataGridView展示資料庫查詢結果C#View資料庫
- WPF/C#:如何將資料分組顯示C#
- win10如何設定自動顯示資料夾大小_win10怎麼顯示資料夾的大小Win10
- WPF/C#:顯示分組資料的兩種方式C#
- 如何利用showdoc自動生成資料字典
- 爬取Arcconf文件教程並自動生成Gitbook文件顯示 - 資料獲Git
- WPF/C#:如何顯示具有層級關係的資料C#
- element table不顯示任何資料,無資料倒是顯示出無資料的了
- 資料顯示設定攻略
- layui 輪播圖動態資料不顯示問題UI
- 如何在請求資料時,顯示載入動畫動畫
- win10自動安裝顯示卡驅動怎樣關閉_怎麼禁止win10自動安裝顯示卡驅動Win10
- 《ASP.NET1200例》高亮顯示ListView中的資料行並自動切換圖片ASP.NETView
- Element 利用Tooltip提示框實現動態顯示文字提示
- 英偉達:資料顯示顯示卡越好吃雞水平越高
- 資料庫下表和列名顯示資料庫
- DataGridView如何獲取選中行資料並更新View
- window10怎麼顯示資料夾大小 win10 如何顯示資料夾大小Win10
- win10 如何顯示資料夾大小 win10如何直接顯示資料夾大小Win10
- win10電腦怎麼自動關閉顯示器_win10自動關閉顯示器的設定步驟Win10
- [20181207]sqlplus下顯示資料精度.txtSQL
- 資料顯示社交網站成黑客發動攻擊重要渠道網站黑客
- C# richTextBox滾動到最後一行 顯示最後一行 自動跳轉最後一行C#
- C#判斷字串的顯示寬度C#字串
- win10 如何顯示隱藏資料夾_win10 如何顯示隱藏的資料夾Win10
- 微信小程式資料資料繫結顯示NaN微信小程式NaN
- win10驅動資料夾在哪裡_win10顯示卡驅動在哪個資料夾Win10
- 利用FreeSql.Generator自動根據資料庫表動態生成實體類SQL資料庫
- win10怎麼顯示隱藏資料夾 win10顯示隱藏資料夾的方法Win10
- 利用Python自動爬取全國30+城市地鐵圖資料Python
- Excel檔案 利用MySQL/Python 實現自動處理資料的功能ExcelMySqlPython
- c# 自動更新程式C#
- Android MPAndroidChart LineChart 顯示資料格式化Android
- 資料顯示:美元主導比特幣交易比特幣
- 使用終端虛擬示波器顯示資料
- Linux基礎命令---mysqlshow顯示資料庫LinuxMySql資料庫