2013-07-30 38 views
-2

我目前正在編寫一個WinForms應用程序,我想使用DataGridView。我知道如何DataGridView與表綁定數據庫這樣的:將定製的DataGridView與SQL Server數據庫綁定

using (SqlConnection con = new SqlConnection(WF_AbsPres.Properties.Settings.Default.DbConnectionString)) 
{ 
    SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM DevInOut", con); 
    SqlCommandBuilder comdBuilder = new SqlCommandBuilder(a); 

    DataTable t = new DataTable(); 
    //t.Locale = System.Globalization.CultureInfo.InvariantCulture; 
    a.Fill(t); 

    //dataGridView1.AutoGenerateColumns = false; 

    bindingSource1.DataSource = t; 

    /// bind the grid view with binding source 
    dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
    dataGridView1.ReadOnly = true; 
    dataGridView1.DataSource = bindingSource1; 

    dataGridView1.DataSource = t; 
    con.Close(); 
} 

但事實是這樣的dataGridView顯示錶的所有列。我想在dataGridView中手動添加列,並將每個列綁定到數據庫表中的特定列。這意味着我不想顯示一些列。

我該怎麼做?由於

+0

'你知道SELECT *'是什麼意思..?你正在選擇所有的列.. – MethodMan

+6

需要了解basci SQL以及需要顯示更多的努力 我敢打賭,如果你看看'Related'鏈接到這個頁面的右邊,你可以找到答案.. SHOW SOME努力 – MethodMan

+0

阿哈你是對的,謝謝。一個問題:我在數據庫中的表有這樣的字段:ID,時間,日期,但我希望網格視圖中的標題以另一種語言顯示,例如farsi。我怎樣才能做到這一點? – user2628363

回答

2

你好在dataGridView中隱藏列可以使用例如下面的代碼:

for (int i = 0; i < (TotalNumberOfColumnsInYourTable; i++) 
     { 

      { 
       dataGridView1.Columns[i].Visible = false; 

      } 

     } 

      //visible columns 
     dataGridView1.Columns["ColumnName"].Visible = true; 

爲了改變header文本您可以使用此:

dataGridView1.Columns["OriginalColumnName"].HeaderText = "YourNewName"; 

如果你想改善僅SqlDataAdapter只需將其更改爲:

SqlDataAdapter a = new SqlDataAdapter("SELECT column1,column2,column3.. FROM DevInOut", con); 

但這意味着未來的工作與未被選中的列將不可能通過datagridview。我不會推薦給你。

0

有幾個選項:

  • 選擇只從數據庫需要
  • 將數據複製到只有你想看到顯示
  • 定製網格視圖的列另一個數據源的數據(應有的AutoGenerateColumns您需要設置爲False的屬性)並手動設置每列的列名稱
  • 將一些列設置爲不可見,如Marek已建議