datagridview是winform編程上很常見也很常用的控件之一面氓,下面就根據(jù)一個小需求來展示一下datagridview是怎么實時刷新顯示查詢結(jié)果的力奋。
目標界面
界面圖片 |
---|
查電話號碼的程序界面.png
|
說明:這個界面并不是VS系統(tǒng)的界面,是用到了第三方的控件實現(xiàn)的 |
實現(xiàn)過程
這個界面用到了Groupbox屈留、label、button和datagridview這幾個控件。
一强法、屬性設置
每個控件的屬性設置在這里就不再贅述了,主要說一下datagridview的設置鱼鼓。
根據(jù)需要拟烫,此程序主要是用來查詢,并不賦予修改的權限迄本,所以以下屬性必須設置硕淑。
AllowUserToAddRows
AllowUserToDeleteRows
AllowUserToResizeColumns
AllowUserToResizeRows
上面四項屬性均設置為False。
二嘉赎、列頭設置
列頭設置如圖 |
---|
添加各個列的名稱.png
|
Tips:在DataPropertyName這里添上對應數(shù)據(jù)庫字段的列名 |
這個時候你會發(fā)現(xiàn)置媳,列頭都擠在了最左邊,想讓它居中充滿顯示公条,怎么辦呢拇囊?
很簡單,把AotuSizeColumnsMode設置為Fill即可靶橱。
好了寥袭,下面我們開始寫程序運行的各種事件。
三关霸、事件實現(xiàn)
上面的屬性都設置完了传黄,下面我們開始寫這個程序的實現(xiàn)步驟。
1队寇、寫一個公共類膘掰,zb_class,包含datagridview的顯示方法佳遣。
方法代碼:
首先聲明一個連接數(shù)據(jù)庫的靜態(tài)變量Zb_ConStr
public static string zb_ConStr = "Server=.;User Id=sa;Pwd=sa;DataBase=test";
然后寫加載datagridview的方法
public static DataView sqldataset(string sqlstr, string tablename)//加載數(shù)據(jù)表
{
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是數(shù)據(jù)庫里的電話號碼表
NUM_DGV.DataSource = zb_class.sqldataset(all_num, "默認加載全部號碼");
}
catch{
MessageBox.Show("連接數(shù)據(jù)庫失斨现邸!沒有數(shù)據(jù)相恃!");
}
}`
3辜纲、datagridview根據(jù)輸入的是漢字還是拼音助記碼(即科室名稱的拼音首字母)自動搜索并顯示出來笨觅。
代碼:
/// <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事件相同见剩,再此不再贅述。
四扫俺、總結(jié)
datagridview自動刷新顯示的根本在于zb_class類里的sqldataset方法和TextChanged事件的結(jié)合運用苍苞。