2011-02-25 31 views
1

我有一個包含datagridview的表單。基本上這個表單用於從數據庫查詢客戶端。用戶執行搜索後,結果顯示在DGV上。我希望用戶能夠點擊他們想要的客戶端,並能夠在另一個表單上查看他們的信息。當新的客戶端被添加到數據庫時,它將被賦予一個唯一的ID,所以當我真正打開帶有這些信息的表單時,我將使用它。但是,如何通過單擊該行來從DGV中檢索該ID?C#:從DataGridView抓取值

在此先感謝。

+0

對不起人人我忘了提一件事。客戶首先按客戶名稱搜索。用戶將在文本框中輸入名稱並單擊搜索按鈕。數據庫然後通過名稱查詢。檢索到的客戶端然後列在DGV中。從那裏,用戶選擇他們正在尋找的客戶端,並彈出其信息的表單。 對不起,我感到困惑 – jquirante 2011-02-25 09:47:01

+0

然後......你有一個ID列(可見或隱藏)在你的datagridview? – Jonathan 2011-02-25 10:53:23

回答

0

將Unique-ID設置爲ItemCollection中的標籤對象。

試試這個:

DataGridView.Items[n].Tag = (object)YOUR_UNIQUE_ID 

0

使用CType(當然如果你希望你的ID相同的命令),你從DataGridView的行的主鍵值。以下是一個示例:

Name = CType(dgview.FindControl("lblname"),Label).Text 

在檢索如上所述的值之後,您將編寫一個查詢以使用該鍵進行搜索。從數據庫中檢索ID值後,再次綁定DataGridView以顯示搜索結果。

+0

請注意'CType'只在VB.NET中可用(但即使在那裏,您也應該更喜歡'DirectCast')。這個問題是關於C#的,它需要一種不同風格的轉換。 – 2011-02-25 09:26:24

0

配置的網格,設置SelectionMode屬性設置爲FullRowSelect。

我想你的數據加載到使用的東西在DataGridView像

GrdClients.DataSource = ListsOfClients 

所以,你將需要處理網格的CellMouseDoubleClick事件。正如你以前的配置SelectionMode屬性設置爲FullRowSelect,你現在可以提取所選擇的客戶端

Client ClientElement = GrdRequests.SelectedRows[0].DataBoundItem 
ShowClientForm(ClientElement.Id) 
0

首先,你必須確保DGV包含ID列(您可以通過Visible屬性設置爲false隱藏)
然後,你必須處理DGV.CellClick事件:
(對不起,VB,從實際的代碼複製粘貼)

If e.RowIndex < 0 Then Exit Sub
Dim id as integer = dgv.Item(0, e.RowIndex).Value

其中0是包含您的客戶ID列的索引。

+0

dvg.item有一個使用列名而不是索引的重載。嘗試儘可能使用列名稱。 – Jonathan 2011-02-25 11:30:35

+0

當然,我知道我知道... – ufoq 2011-02-25 14:03:27