datagridview是winform編程上很常見也很常用的控件之一,下面就根據一個小需求來展示一下datagridview是怎么實時刷新顯示查詢結果的。
目標界面
界面圖片 |
---|
![]() |
說明:這個界面並不是VS系統的界面,是用到了第三方的控件實現的 |
實現過程
這個界面用到了Groupbox、label、button和datagridview這幾個控件。
一、屬性設置
每個控件的屬性設置在這里就不再贅述了,主要說一下datagridview的設置。
根據需要,此程序主要是用來查詢,並不賦予修改的權限,所以以下屬性必須設置。
AllowUserToAddRows
AllowUserToDeleteRows
AllowUserToResizeColumns
AllowUserToResizeRows
上面四項屬性均設置為False。
二、列頭設置
列頭設置如圖 |
---|
![]() |
Tips:在DataPropertyName這里添上對應數據庫字段的列名 |
這個時候你會發現,列頭都擠在了最左邊,想讓它居中充滿顯示,怎么辦呢?
很簡單,把AotuSizeColumnsMode設置為Fill即可。
好了,下面我們開始寫程序運行的各種事件。
三、事件實現
上面的屬性都設置完了,下面我們開始寫這個程序的實現步驟。
1、寫一個公共類,zb_class,包含datagridview的顯示方法。
方法代碼:
首先聲明一個連接數據庫的靜態變量Zb_ConStr
public static string zb_ConStr = "Server=.;User Id=sa;Pwd=sa;DataBase=test";
然后寫加載datagridview的方法
public static DataView sqldataset(string sqlstr, string tablename)//加載數據表
{
SqlConnection zb_myconn = new SqlConnection(zb_ConStr);
SqlDataAdapter da = new SqlDataAdapter(sqlstr, zb_myconn);
DataSet ds = new DataSet();
da.Fill(ds, tablename);
DataView dv = new DataView(ds.Tables[tablename]);
dv.AllowNew = false;
return dv;
}
2、雙擊打開程序時,讓datagridview顯示所有的電話信息。
/// <summary>
/// 啟動時的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CheckPhoneNum_Load(object sender, EventArgs e)
{
try{
string all_num = "select * from TEL_NUM"; //TEL_NUM是數據庫里的電話號碼表
NUM_DGV.DataSource = zb_class.sqldataset(all_num, "默認加載全部號碼");
}
catch{
MessageBox.Show("連接數據庫失敗!沒有數據!");
}
}
3、datagridview根據輸入的是漢字還是拼音助記碼(即科室名稱的拼音首字母)自動搜索並顯示出來。
/// <summary>
/// 輸入漢字或者助記碼,datagridview自動搜索顯示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ksmc_textbox_TextChanged(object sender, EventArgs e)
{
string hanzi = "select * from TEL_NUM where KSMC like'%"+ksmc_textbox.Text.Trim()+"%'";
string zjm = "select * from TEL_NUM where ZJM like'%"+ksmc_textbox.Text.Trim()+"%'";
Regex rx = new Regex("^[\u4E00-\u9FA5]+$"); //判斷輸入的是拼音助記碼還是漢字
if(rx.IsMatch(ksmc_textbox.Text))
{
NUM_DGV.DataSource=zb_class.sqldataset(hanzi,"輸入的是漢字");
}
else
{
NUM_DGV.DataSource = zb_class.sqldataset(zjm, "輸入的是漢字");
}
}
4、點擊按鈕的事件和輸入框的TextChanged事件相同,再此不再贅述。
總結
datagridview自動刷新顯示的根本在於zb_class類里的sqldataset方法和TextChanged事件的結合運用。