在我的一篇文章中,我解釋了如何在沒有資料庫的情況下以web形式綁定gridview。這裡,我将解釋如何在沒有資料庫的windows窗體中綁定datagrid。
當我們使用windows窗體或web窗體時,這個需求非常有用。我的要求很簡單。當我們輸入所有字段并單擊Book按鈕時。它将暫時将資料綁定到如下所示的資料網格。我已經展示了下面的截圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2PnVGcq5iaylHN4NGM0VGevwVN5kTNwkTMtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.jpeg)
我們來看看怎麼做,以下是實作步驟。
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按鈕上調用這個方法。
這樣,我們就可以在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;
}
複制
是以,通過這種方式,我們就可以在windows應用程式中維護datatable狀态。