主頁 > 軟體工程 > vb中datagrid控制元件的用法

vb中datagrid控制元件的用法

2020-09-18 17:20:53 軟體工程

  如何在vb中datagrid控制元件的第n行第m列獲取焦點?或者當焦點在某一行某一列時,是焦點移到該行的下一列

uj5u.com熱心網友回復:

使用 DataGrid 控制元件


DataGrid 控制元件是一種類似于電子資料表的系結控制元件,可以顯示一系列行和列來表示 Recordset 物件的記錄和欄位。可以使用 DataGrid 來創建一個允許最終用戶閱讀和寫入到絕大多數資料庫的應用程式。DataGrid 控制元件可以在設計時快速進行配置,只需少量代碼或無需代碼。當在設計時設定了 DataGrid 控制元件的 DataSource 屬性后,就會用資料源的記錄集來自動填充該控制元件,以及自動設定該控制元件的列標頭。然后您就可以編輯該網格的列;洗掉、重新安排、添加列標頭、或者調整任意一列的寬度。

在運行時,可以在程式中切換 DataSource 來察看不同的表,或者可以修改當前資料庫的查詢,以回傳一個不同的記錄集合。

注意   DataGrid 控制元件與 Visual Basic 5.0中的 DBGrid 是代碼兼容的,除了一個例外:DataGrid 控制元件不支持 DBGrid 的“解除系結模式”概念。DBGrid 控制元件包括在 Visual Basic 98 的 Tools 目錄中。

可能的用法
查看和編輯在遠程或本地資料庫中的資料。


與另一個資料系結的控制元件(諸如 DataList 控制元件)聯合使用,使用 DataGrid 控制元件來顯示一個表的記錄,這個表通過一個公共欄位鏈接到由第二個資料系結控制元件所顯示的表。 
使用 DataGrid 控制元件的設計時特性
可以不撰寫任何代碼,只通過使用 DataGrid 控制元件的設計時特性來創建一個資料庫應用程式。下面的說明概要地說明了在實作 DataGrid 控制元件的典型應用時的一般步驟。完整的循序漸進的指示,請參閱主題“DataGrid 方案1: 使用 DataGrid 控制元件創建一個簡單資料庫應用程式”。

要在設計時實作一個 DataGrid 控制元件 

為您希望訪問的資料庫創建一個 Microsoft 資料鏈接 (.UDL) 檔案。請參閱“創建 Northwind OLE DB 資料鏈接”主題,以獲得一個示例。


在表單上放置一個 ADO Data 控制元件,并將其 ConnectionString 屬性設定為在第 1 步中所創建的OLE DB 資料源。


在這個 Ado Data 控制元件的 RecordSource 屬性中輸入一條將回傳一個記錄集的 SQL 陳述句。例如, 
Select * From MyTableName Where CustID = 12

在表單上放置一個 DataGrid 控制元件,并將其 DataSource 屬性設定為這個 ADO Data 控制元件。


右鍵單擊該 DataGrid 控制元件,然后單擊“檢索欄位”。


右鍵單擊該 DataGrid 控制元件,然后單擊“編輯”。


重新設定該網格的大小、洗掉、或添加網格的列。


右鍵單擊該 DataGrid 控制元件,然后單擊“屬性”。


使用“屬性頁”對話框來設定該控制元件的適當的屬性,將該網格配置為所需的外觀和行為。 
在運行時更改顯示的資料
在創建了一個使用設計時特性的網格后,也可以在運行時動態地更改該網格的資料源。下面介紹實作這一功能的通常方法。

更改 DataSource 的RecordSource
更改所顯示的資料的最通常的方法是改變該 DataSource 的查詢。例如,如果 DataGrid 控制元件使用一個 ADO Data 控制元件作為其 DataSource,則重寫 RecordSource、重繪該 ADO Data 控制元件、都將改變所顯示的資料。

' ADO Data 控制元件連接的是 Northwind 資料庫的
' Products 表。新查詢查找所有 
' SupplierID = 12 的記錄。
Dim strQuery As String
strQuery = "SELECT * FROM Suppliers WHERE SupplierID = 12"
Adodc1.RecordSource = strQuery
Adodc1.Refresh

更改 DataSource
在運行時,可以將 DataSource 屬性重新設定為一個不同的資料源。例如,您可能具有若干個 ADO Data 控制元件,每個控制元件連接不同的資料庫,或設定為不同的 RecordSource 屬性。可以簡單地將 DataSource 從一個 ADO Data 控制元件重新設定為另一個 ADO Data 控制元件:

' 將 DataSource 重新設定為一個連接到 Pubs 資料庫的、
' 使用 Authors 表的 ADO Data 控制元件。
Set DataGrid1.DataSource = adoPubsAuthors

重新系結 DataSource
當將 DataGrid 控制元件用于一個遠程資料庫,諸如 SQLServer 時,可以改變表的結構。例如,可以給這個表添加一個欄位。在這種情形時,可以呼叫 Rebind 方法根據新的結構來重新創建該網格。注意,如果已經在設計時改變了這個列的布局,DataGrid 控制元件將會試圖重新創建當前的布局,包括任何空的列。不過,通過首先呼叫 ClearFields 方法,可以強制該網格重新設定所有的列。

從 DataGrid 回傳值
在 DataGrid 被連接到一個資料庫后,可能想要監視用戶單擊了哪一個單元。您可以使用 RowColChange 事件 — 而不是 Click 事件 — 如下所示,:

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
   ' 顯示用戶所單擊的單元的文字、行和列的資訊。
   Debug.Print DataGrid1.Text; DataGrid1.Row; DataGrid1.Col
End Sub

使用 CellText 和 CellValue 方法
當一個列使用 NumberFormat 屬性設定格式后,CellText 和 CellValue 屬性是很有用的。NumberFormat 屬性不必更改實際的資料的格式就可以更改任何包含數字的列的格式。例如,給定一個網格,其中包含一個名為 ProductID 的、包含整數的列。下面的代碼將使 DataGrid 以"P-0000" 的格式來顯示資料。換句話說,盡管在 ProductID 欄位中所包含的實際數值為 "3",但該網格所顯示的值將是 "P-0003"。

Private Sub Form_Load()
   DataGrid1.Columns("ProductID").NumberFormat = "P-0000"
End Sub

要回傳資料庫中所包含的實際值,應使用 CellValue 方法,如下所示:

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
   Debug.Print _
   DataGrid1.Columns("ProductID").CellValue(DataGrid1.Bookmark)
End Sub

注意   上面所用的 CellValue 和下面所用的 CellText 值,都需要將 bookmark 屬性作為一個引數,功能才正確。

相反地,如果要回傳該欄位的格式化的值,應使用 CellText 方法:

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
   Debug.Print _
   DataGrid1.Columns("ProductID").CellText(DataGrid1.Bookmark)
End Sub

注意   上面的 CellText 方法等價于使用 DataGrid 控制元件的 Texr 屬性。

下一步
要閱讀關于使用該控制元件創建簡單的應用程式的一個循序漸進的程序,請參閱“使用 DataGrid 控制元件創建簡單的資料庫應用程式”,或“創建一個連接 DataList 控制元件的 DataGrid”。

要了解關于 Split 物件以及如何對其編程的詳細資訊,請參閱“操作 DataGrid 視圖”。

uj5u.com熱心網友回復:

趙四老師。我還是不懂你說的啊。。

uj5u.com熱心網友回復:

哈哈,估計他也不懂你說的。反正我是沒懂。

uj5u.com熱心網友回復:

我的意思是說  如何把一個控制元件中的內容(比如text1.text)匯入到datagrid控制元件的第3行第5列。。。畢竟新手。。個人感覺是焦點

uj5u.com熱心網友回復:

Col、Row 屬性示例
這個例子將“Here”放到當前單元中,然后把活動單元改變成第三行中的第三個單元,并且把“There”放到那個單元中。要嘗試這個例子,請使用“部件”對話框對工具框添加一個 MS Flex Grid 控制元件(在“工程”選單中,選擇“部件”,然后選定 Microsoft Flex Grid Control),然后在新表單中繪制一個網格。要運行該程式,請按 F5 鍵,然后再單擊該網格。

Private Sub Form_Load ()
   MSFlexGrid1.Rows = 8   ' 設定行數和列數。
   MSFlexGrid1.Cols = 5
End Sub

Private Sub MSFlexGrid1_Click ()
   ' 將文本放到當前單元中。
   MSFlexGrid1.Text = "Here"
   '將文本放到第三行,第三列。
   MSFlexGrid1.Col = 2
   MSFlexGrid1.Row = 2
   MSFlexGrid1.Text = "There"
End Sub

下一個例子顯示出活動單元的位置以及當用戶選定一個單元或單元范圍時的選定范圍。注意,在選定一個范圍時,活動的單元并不改變。選定一個范圍,然后單擊表單使活動單元沿著選中范圍的周邊移動。注意,被選中的范圍并不改變。

要嘗試這個例子,請創建一個新工程,使用“部件”對話框(在“工程”選單中,選擇“部件”,然后檢查 Microsoft Flex Grid Control)添加一個 MS Flex Grid 控制元件,然后繪制一個 MS Flex Grid 和兩個標簽。 將代碼復制到宣告部分,然后按 F5 鍵運行這個程式。

Private Sub Form_Load ()
   MSFlexGrid1.Cols = 6   ' 設定行數和列數。
   MSFlexGrid1.Rows = 7
End Sub

Private Sub MSFlexGrid1_RowColChange ()
    Msg = "Active Cell: " & Chr(64 + MSFlexGrid1.Col)
   Mst = Msg & MSFlexGrid1.Row
   Label1.Caption = Msg
End Sub

Private Sub MSFlexGrid1_SelChange ()
    Msg = "Selection: " & Chr(64 + MSFlexGrid1.SelStartCol)
   Msg = Msg & MSFlexGrid1.SelStartRow
    Msg = Msg & ":" & Chr(64 + MSFlexGrid1.SelEndCol)
   Msg = Msg & MSFlexGrid1.SelEndRow
   Label2.Caption = Msg
End Sub

Private Sub Form_Click ()
   ' 每單擊一次表單,這一程序
   ' 就沿著選中
   ' 范圍的周邊移動活動單元。
   Dim GR, GC As Integer
   If MSFlexGrid1.Row = MSFlexGrid1.SelStartRow Then
      If MSFlexGrid1.Col = MSFlexGrid1.SelEndCol Then
         GR = 1: GC = 0
      Else
         GR = 0: GC = 1
      End If
   ElseIf MSFlexGrid1.Row = MSFlexGrid1.SelEndRow Then
      If MSFlexGrid1.Col = MSFlexGrid1.SelStartCol Then
         GR = -1: GC = 0
      Else
         GR = 0: GC = -1
      End If
   Else
      If MSFlexGrid1.Col = MSFlexGrid1.SelStartCol Then
         GR = -1: GC = 0
      Else
         GR = 1: GC = 0
      End If
   End If
   MSFlexGrid1.Row = MSFlexGrid1.Row + GR
   MSFlexGrid1.Col = MSFlexGrid1.Col + GC
End Sub

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/75320.html

標籤:控件

上一篇:vb中如何把多個text控制元件的資料匯入到msf或者datagrid控制元件中

下一篇:vb中如何將一部分資料選擇好的資料匯入到datagrid控制元件中

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more