winform datagridview實時更新顯示查詢結果


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事件的結合運用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM