2014-01-23 20 views
4

在我的WinformC#應用程序我有一個DataGridView綁定與DataTable並有很多記錄。 我想以下列格式顯示所選行(DataGridView)的詳細信息(請參閱圖像)。我應該使用什麼Control或(技巧)來實現此目的。如何獲得垂直列的DataGridView

enter image description here

換句話說:「表的第一列應該有列名和第2列應該有相應的價值」

+0

ListView可能是最好的。 –

+0

@ IgbyLargeman-Ok。將嘗試與列表視圖 – prograshid

+0

您可以嘗試SQL透視從查詢級別生成這種結果 – tarzanbappa

回答

3

通常情況下,我不會在的DataGridView做到這一點,其真正目的是顯示多條記錄,你只希望一次顯示一個記錄。我可以提出兩種處理方法:

如果您知道要提前顯示的字段,典型的方法是在設計時佈置一組單獨的值顯示標籤和其他簡單的控件。這具有以下優點:

  • 事物的位置更加靈活
  • 類型用於每個單獨的場控制的可定製。例如,booean值可能會顯示一個複選框,而不是文本。
  • 該值之前的標籤可以本地化爲用戶語言。即使不是國際應用程序,它有時也會顯示與列的數據庫模式名稱不同的標籤。

如果你不知道該字段在設計時被顯示出來,或者不想打擾鋪設出來,使用的PropertyGrid控制,而不是一個的DataGridView。我從來沒有真正有一個DataTable作爲數據源試過,但它看起來像有在C#/winforms: how to best bind a propertygrid and a System.Data.DataRow

0

這是我會做什麼來實現這個

  1. 一旦主DataGridView中建立和數據綁定,通過集合迭代在網格列和存儲可見列的名字在名單(這樣做只是一次)
  2. 創建另一個簡單的DataGridView基於控制(這樣做只是一次)
  3. 創建的SelectionChanged甚至t處理程序並獲取所選行的索引,如果使用單行選擇模式,則可以通過dg.SelectedRows [0] .Index獲取它。
  4. 用兩列創建一個DataTable,一個Field和另一個Value。遍歷步驟1中所需列的內置列表,並在字段中添加列名稱,並通過使用在步驟3中獲得的索引綁定到主DataGridView的主數據表檢索DataRow。
  5. 清除在步驟2,將其綁定到在步驟4中創建的數據表並顯示。
0

Visual Basic Power PacksDataRepeater控制,可以在這些情況下使用一個發達的答案了點。您可以按照自己想要的方式設計每一行,併爲每一行放置想要放置的任何控件。

這裏是一個視頻演示如何DataRepeater控件可用於:

http://channel9.msdn.com/Blogs/funkyonex/The-New-DataRepeater-Control-in-the-Latest-Power-Packs-Release

您也可以下載的Visual Basic電源包:

http://www.microsoft.com/en-in/download/details.aspx?id=25169

而且,當你讀到這正在使用Visual Studio 2013:

http://ntcoder.com/bab/2013/12/20/visualbasic-powerpack-missing-from-visual-studio-2013/

-1
<asp:Repeater id="Repeater1" runat="server"> 
<ItemTemplate> 
    <tr> 
     <td>Reg_no</td> 
     <td> 
      <asp:Label runat="server" ID="lblreg_no" Text='<%# Eval("reg_no") %>' /> 
     </td> 
    </tr> 
    <tr> 
     <td>Name</td> 
     <td> 
      <asp:Label runat="server" ID="lblname" Text='<%# Eval("name") %>' /> 
     </td> 
    </tr> 
    <tr> 
     <td>DOB</td> 
     <td> 
      <asp:Label runat="server" ID="lbldob" Text='<%# Eval("dob") %>' /> 
     </td> 
    </tr> 
</ItemTemplate> 
</asp:Repeater> 

然後在你的代碼背後,你只需要像另一個容器一樣綁定它。

Repeater1.datasource= ""; 
Repeater1.DataBind(); 
相關問題