天天看點

C#代碼示例:在WinForm中建立并綁定一個DataTable

在我的一篇文章中,我解釋了如何在沒有資料庫的情況下以web形式綁定gridview。這裡,我将解釋如何在沒有資料庫的windows窗體中綁定datagrid。

當我們使用windows窗體或web窗體時,這個需求非常有用。我的要求很簡單。當我們輸入所有字段并單擊Book按鈕時。它将暫時将資料綁定到如下所示的資料網格。我已經展示了下面的截圖:

C#代碼示例:在WinForm中建立并綁定一個DataTable

我們來看看怎麼做,以下是實作步驟。

1、建立一個資料表。

2、通過需要資料類型來建立列名column或标題。

3、将此列column添加到datatable

4、建立一個包含輸入控件所有值的行。

5、将datatable綁定到Datagrid。

在做這個之前,我們需要先添加一個命名空間。

using System.Data;

Step 1: 建立資料表

DataTable dt = new DataTable();           

複制

Step 2: 建立資料列

DataColumn dc1 = new DataColumn("PERSONAL NO", typeof(int));    
DataColumn dc2 = new DataColumn("NAME", typeof(string));    
DataColumn dc3 = new DataColumn("DATE", typeof(string));    
DataColumn dc4 = new DataColumn("QUANTITY", typeof(int));    
DataColumn dc5 = new DataColumn("TYPE", typeof(string));           

複制

Step 3: 添加這些列Columns 到 DataTable,

dt.Columns.Add(dc1);    
dt.Columns.Add(dc2);    
dt.Columns.Add(dc3);    
dt.Columns.Add(dc4);    
dt.Columns.Add(dc5);           

複制

Step 4: 建立一個行對象

dt.Rows.Add(txt_personalNo.Text,txt_name.Text,txt_date.Text,Convert.ToInt32(txt_quantity.Text),cmb_type.SelectedItem.ToString());           

複制

Step 5: 資料綁定datatable 到 datagrid:

dataGridView1.DataSource = dt;           

複制

這些就是完整代碼,很簡單,還需要把這些代碼添加到一個方法裡,并在按鈕單擊時調用該方法。

public void createnewrow()  
{  
    DataTable dt = new DataTable();  
    DataColumn dc1 = new DataColumn("PERSONAL NO", typeof(int));  
    DataColumn dc2 = new DataColumn("NAME", typeof(string));  
    DataColumn dc3 = new DataColumn("DATE", typeof(string));  
    DataColumn dc4 = new DataColumn("QUANTITY", typeof(int));  
    DataColumn dc5 = new DataColumn("TYPE", typeof(string));  
    dt.Columns.Add(dc1);  
    dt.Columns.Add(dc2);  
    dt.Columns.Add(dc3);  
    dt.Columns.Add(dc4);  
    dt.Columns.Add(dc5);  
    dt.Rows.Add(txt_personalNo.Text, txt_name.Text, txt_date.Text, Convert.ToInt32(txt_quantity.Text), cmb_type.SelectedItem.ToString());  
    dataGridView1.DataSource = dt;  
}
private void btn_book_Click(object sender, EventArgs e)  
{  
createnewrow();  
}           

複制

現在在Book按鈕上調用這個方法。

C#代碼示例:在WinForm中建立并綁定一個DataTable

這樣,我們就可以在windows窗體應用程式中綁定一個沒有資料庫的datagrid。

對于維護這個datagrid的狀态,現在使用者面臨的問題是什麼。

在輸入第一次預訂的詳細資訊後,當我進行第二次預訂時,第一次預訂的詳細資訊将會丢失,是以為了防止這種情況發生,您必須稍微修改一下代碼。在這裡,我已經解釋了如何做到這一點。

在将行綁定到datagrid時,輸入一個條件。首先,檢查該資料表中是否有資料。如果沒有資料,則綁定datagrid中的列标頭,否則隻綁定沒有datacolumn标頭的行。

這裡是第一個更改:聲明datatable全局變量。

public partial class LunchDinnerBookingEntry : Form  
  {  
      CanteenBAL obj = new CanteenBAL();  
       DataTable dt = new DataTable();  
      public LunchDinnerBookingEntry()  
      {  
          InitializeComponent();  
      }           

複制

接着綁定時添加條件判斷。

public void createnewrow()  
        {  
            if(dt.Rows.Count<=0)  
            {  

                DataColumn dc1 = new DataColumn("PERSONAL NO", typeof(int));  
                DataColumn dc2 = new DataColumn("NAME", typeof(string));  
                DataColumn dc3 = new DataColumn("DATE", typeof(string));  
                DataColumn dc4 = new DataColumn("QUANTITY", typeof(int));  
                DataColumn dc5 = new DataColumn("TYPE", typeof(string));  


                dt.Columns.Add(dc1);  
                dt.Columns.Add(dc2);  
                dt.Columns.Add(dc3);  
                dt.Columns.Add(dc4);  
                dt.Columns.Add(dc5);  



                dt.Rows.Add(txt_personalNo.Text, txt_name.Text,
                 txt_date.Text, Convert.ToInt32(txt_quantity.Text), cmb_type.SelectedItem.ToString());  


                dataGridView1.DataSource = dt;  

            }  
            else  
            {  

                dt.Rows.Add(txt_personalNo.Text, txt_name.Text, 
                txt_date.Text, Convert.ToInt32(txt_quantity.Text), cmb_type.SelectedItem.ToString());  


                dataGridView1.DataSource = dt;  

            }           

複制

C#代碼示例:在WinForm中建立并綁定一個DataTable

是以,通過這種方式,我們就可以在windows應用程式中維護datatable狀态。