① vb2010 DataGridView用法
DataGridView新加行的默認值的設定,可以在DataGridView.DefaultValuesNeeded事件里處理。
//DefaultValuesNeeded事件處理方法
privatevoidDataGridView1_DefaultValuesNeeded(objectsender,
DataGridViewRowEventArgse)
{
//設定單元格的默認值
e.Row.Cells["Column1"].Value=0;
e.Row.Cells["Column2"].Value="-";
}
DataGridView獲得焦點:
dgv_details.Focus();
DataGridView指定當前單元格:
dgv_details.CurrentCell=dgv_details[0,0];DataGridView中刪除行主要代碼:
#開始編輯狀態
dgv_details.BeginEdit(false);
#單元格顏色(前景色和背景色)
dgv.Rows[0].Cells[0].Style.BackColor=Color.DarkOrange;
dgv.Rows[1].Cells[0].Style.ForeColor=Color.DarkRed;
privatevoidbtnDelete_Click(objectsender,EventArgse)
{
//判斷用戶是否選擇一行數據,true為沒選擇,false為選擇
if(this.dgv.Rows[this.dgv.CurrentRow.Index].Cells[0].Value.ToString()=="")
{
MessageBox.Show("請選擇一項進行刪除");
}
else
{
//判斷用戶是否點擊確定按鈕,true為點擊,false為沒有點擊
if(MessageBox.Show("確認刪除?","提示",MessageBoxButtons.YesNo)==DialogResult.Yes)
{
//定義數組,用循環賦值
String[]array=newString[];
for(inti=0;i<this.dgv.SelectedRows.Count;i++)
{
Stringstr=this.dgv.Rows[this.dgv.SelectedRows[i].Index].Cells[0].Value.ToString();
StringstrDelete="='"+str+"'";
array[i]=strDelete;
}
//遍歷數組
foreach(Stringstrinarray)
{
this.Update(str);
}
//這里寫刷新的方法
}
}
}
② C#中的dataGridView的使用
第一:空白行,其實表示的是你可以添加新行,去除它只要設置datagridview的屬性AllowUserToAddRows為false即可。
第二:按Enter同時修改資料庫中的數據,在按Enter時datagridview其實是觸發了結果值的提交,你可以在提交事件中寫關於資料庫的update,不過這樣頻繁的與資料庫交互的話,會比較繁瑣,你可以嘗試一個按鈕,然後通過按鈕一次性提交
③ 如何使用datagridview修改資料庫
實現思路:
實現資料庫和datagridview數據連接
實現修改datagridview觸發事件,獲取更新數據存放在變數里
通過變數的變化實現資料庫更新功能。
功能代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.SqlClient;
namespace Quanxian
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private int job_id;
private string job_desc;
private int min_lvl;
private int max_lvl;
private void Form2_Load(object sender, EventArgs e)
{
binddatagridview();
}
/// <summary>
/// 綁定Datagridview的方法
/// </summary>
private void binddatagridview()
{
SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
SqlDataAdapter sqldap = new SqlDataAdapter("select * from jobs", sqlcon);
DataSet ds = new DataSet();
sqldap.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
}
/// <summary>
/// 編輯單元格後觸發
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
job_id = int.Parse (this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
job_desc = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
min_lvl = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());
max_lvl = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());
}
}
/// <summary>
/// 修改
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
string str = "update jobs set job_desc='" + job_desc + "',min_lvl=" + min_lvl + ",max_lvl=" + max_lvl + " where job_id=" + job_id + "";
SqlCommand sqlcom = new SqlCommand(str,sqlcon);
try
{
sqlcon.Open();
if (sqlcom.ExecuteNonQuery() > 0)
MessageBox.Show("保存成功");
else
MessageBox.Show("保存失敗!");
}
catch
{
//異常
}
finally
{ sqlcon.Close();}
}
/// <summary>
/// 刷新
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
binddatagridview();
}
}
}
④ dataGridView的使用方法
1)把你的dataGridView和一個數據源綁定,並且自動生成增刪改查方法,同時使得dataGridView的「允許編輯」為True(真),這樣你雙擊某個單元格就直接進入編輯狀態了。2)把DataGrid的「允許刪除」設置為True(真),這樣你滑鼠指向dataGrid的最左邊空白處,選中某一行後按Del鍵即可刪除改行。3)如果你是通過文本框插入數據到數據源,並且重新綁定到dataGrid,那麼直接dataGrid.Rows[dataGrid.Rows.Count-1].Cells["列名"].Value即可獲得最後插入行的某個列的內容
⑤ c# datagridview主要方法
基本數據綁定
熟悉 DataGridView 的最佳方法就是實際嘗試一下,無需配置任何屬性。就像 DataGrid 一樣,您可以使用 DataSource 屬性來綁定 DataTable 對象(或從 DataTable 派生的對象)。
Dim ds As DataSet = GetDataSet()DataGridView1.DataSource = ds.Tables("Customers")
與 DataGrid 不同的是,DataGridView 一次只能顯示一個表。如果綁定整個 DataSet,則不會顯示任何數據,除非您使用要顯示的表名設置了 DataMember 屬性。
DataGridView1.DataSource = dsDataGridView1.DataMember = "Customers"
美化 DataGridView
datagridview 的默認外觀僅僅比 DataGrid 略有改進,但是使用幾項快速調整功能,您可以將其顯著改進。
其中的一個問題就是列無法自動展開以適合其包含的數據。您可以使用 DataGridView.AutoSizeColumns() 方法以及 枚舉中的某個值來解決此問題。您可以選擇根據標題文本、當前顯示的行或表中的所有行的的寬度來調整列寬。
' 根據標題或此列的某一行中' 最長一段文本的寬度調整' 列寬。DataGridView1.AutoSizeColumns( _.HeaderAndRows)
請記住,此方法必須在綁定數據後調用,否則不會產生任何效果。你可能還需要在用戶編輯數據後使用它(可能在響應 DataGridView.CellValueChanged 等事件時)。
如果不增加列寬,則可以更改行高。默認情況下,列中的文本會跨越多行。如果您使用 DataGridView.AutoSizeRows() 方法,則行會根據其中的內容調整高度。使用此方法前,您可能希望增加列寬,尤其是在欄位包含大量文本時。例如,以下代碼片段使「說明」列的列寬增加為原列寬的四倍,然後調整行高以容納其內容。
DataGridView.Columns("Description").Width *= 4DataGridView.AutoSizeRows( _DataGridViewAutoSizeRowsMode.HeaderAndColumnsAllRows)
比較了自動調整 DataGridView 大小的各種方法。
另一個合理的更改是清理每一列中顯示的標題文本。例如,標題「order Date」比欄位名稱「OrderDate」看上去更為專業。這項更改很容易進行。您只需從 DataGridView.Columns 集合中檢索相應的 DataGridViewColumn,並修改其 HeaderText 屬性:
DataGridView.Columns("OrderID").HeaderText = "Order ID"
使用 DataGridView 選擇單元格
默認情況下,datagridview 允許自由選擇。用戶可以突出顯示單元格或單元格組,可以一次突出顯示所有單元格(通過單擊網格右上角的方塊),還可以突出顯示一行或多行(通過在行標題列中單擊)。根據選擇模式,用戶甚至能夠通過選擇列標題來選擇一列或多列。通過使用 DataGridViewSelectionMode 枚舉中的某個值來設置 DataGridView.SelectionMode 屬性,可以控制此行為,如下所述:
通過 DataGridView,可以使用以下三個屬性方便地檢索選定的單元格:SelectedCells、SelectedRows 和 SelectedColumns。無論使用的是哪種選擇模式,SelectedCells 都始終返回 DataGridViewCell 對象的集合。另一方面,如果使用行標題選擇了整個行,則 SelectedRows 只返回信息,而如果使用列標題選擇了整個列,則 SelectedColumns 也只返回信息。
例如,以下代碼片段將檢查選定的整個行。只要找到一行,它就會在消息框中顯示 CustomerID 列中的相應值:
For Each SelectedRow As DataGridViewRow In _DataGridView1.SelectedRowsMessageBox.Show( _SelectedRow.Cells("CustomerID").Value)Next
使用 CurrentCell 或 CurrentCellAddress 屬性檢索對當前單元格的引用也同樣簡單。使用 DataGridView 時,您會注意到當前單元格被一個矩形圍住,看起來像是一個用黑色虛線繪制的方框。這就是用戶當前所在的位置。
currentcelladdress 屬性是只讀的,但是您可以使用 CurrentCell 以編程方式更改當前位置。完成此操作後,DataGridView 將被滾動以使當前位置可見。
' 移至第十一行的第四個單元格。DataGridView.CurrentCell = _DataGridView.Rows(10).Cells(3)
DataGridView 對象
到目前為止,您已經了解了如何與當前選定的一組行、單元格和列進行交互。datagridview 提供了兩個關鍵集合,用於處理整個數據集。這兩個集合分別是 Columns(DataGridViewColumn 對象的集合)和 Rows(DataGridViewRow 對象的集合,每個對象都引用一組 DataGridViewCell 對象的集合)。 顯示了對象模型。
一般而言,您將使用 DataGridViewColumn 對象來配置列顯示屬性、格式設置及標題文本,而使用 DataGridViewRow 和 DataGridViewCell 對象從綁定的記錄中檢索實際數據。在 DataGridViewCell 中修改數據時,處理方式與用戶編輯的方式相同:引發相應的 DataGridView 更改事件,並且修改底層的 DataTable。
現在您已經了解了 DataGridView 對象模型,因此可以輕松地創建遍歷該表的代碼。要選擇行、列或單元格,只需找到對應的 DataGridViewRow、DataGridViewColumn 或 DataGridViewCell 對象,並將 IsSelected 屬性設置為 True。
以下示例以編程方式選擇 OrderID 欄位的值小於 100 的所有行:
For Each Row As DataGridViewRow In DataGridView1.RowsIf Row.Cells("OrderID").Value < 100 ThenRow.Selected = TrueEnd IfNext
值得一提的是,有幾個從 DataGridViewColumn 派生的不同的類。這些類可以控制在單元格中顯示和編輯值的方式。.NET 包括五個預先創建的 DataGridView 列類:DataGridViewButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn 和 DataGridViewTextBoxColumn。
DataGridView 樣式
設計 DataGridView 時面臨的挑戰之一就是創建一個格式設置系統,該系統要能夠足夠靈活地應用不同級別的格式設置,而對於非常大的表又要保持高效。從靈活性角度來看,最好的方法是允許開發人員分別配置每個單元格。但是從效率角度來看,這種方法可能是有害的。包含數千行的表中具有好幾萬個單元格,維護每個單元格的不同格式肯定會浪費很多內存。
為解決此問題,datagridview 通過 DataGridViewCellStyle 對象來實現多層模型。DataGridViewCellStyle 對象表示單元格的樣式,並且包括如顏色、字體、對齊、換行和數據格式等詳細信息。您可以創建一個 DataGridViewCellStyle 來指定整個表的默認格式。此外,還可以指定列、行和各個單元格的默認格式。格式設置的越細致、創建的 DataGridViewCellStyle 對象越多,該解決方案的可伸縮性也就越小。但是,如果您主要使用基於列和基於行的格式設置,並且只是偶爾設置各個單元格的格式,則與 DataGrid 相比,DataGridView 不需要太多內存。
datagridview 應用格式設置時,將遵循以下優先順序(從最高到最低):
1. DataGridViewCell.Style 2. DataGridViewRow.DefaultCellStyle 3. DataGridView. 4. DataGridView.RowsDefaultCellStyle 5. DataGridViewColumn.DefaultCellStyle6. DataGridView.DefaultCellStyle
重要的是要清楚:樣式對象不是以「全有/全無」的方式應用的,datagridview 會檢查每個屬性。例如,假設您的單元格使用 DataGridViewCell.Style 屬性來應用自定義字體,但沒有設置自定義前景色。結果,該字體設置將覆蓋任何其他樣式對象中的字體信息,但如果層次結構中下一個樣式對象的前景色不為空,則將從該對象繼承前景色(在這種情況下為 DataGridViewRow.DefaultCellStyle)。
datagridviewcellstyle 定義了兩種格式設置:數據和外觀。數據格式設置描述顯示數據綁定值之前如何對其進行修改。這種格式設置通常包括使用格式設置字元串將數字或日期值轉換為文本。要使用數據格式設置,只需使用 DataGridViewCellStyle.Format 屬性設置格式定義或自定義格式字元串即可。
例如,以下代碼片段對 UnitCost 欄位中的所有數字進行格式設置,以將它們顯示為貨幣值,保留兩位小數並加上在區域設置中定義的相應貨幣符號:
DataGridView1.Columns("UnitCost"). _DefaultCellStyle.Format = "C"
外觀格式設置包括顏色和格式等表面細節。例如,以下代碼右對齊 UnitCost 欄位、應用粗體並將單元格的背景更改為黃色:
DataGridView1.Columns("UnitCost"). _DefaultCellStyle.Font = _New Font(DataGridView.Font, FontStyle.Bold)DataGridView1.Columns("UnitCost"). _DefaultCellStyle.Alignment = _DataGridViewContentAlignment.MiddleRightDataGridView1.Columns("UnitCost"). _DefaultCellStyle.BackColor = Color.LightYellow
其他與格式設置相關的屬性包括 ForeColor、SelectionForeColor、SelectionBackColor、WrapMode(控制文本在空間允許時是跨越多行還是直接截斷)及 NullValue(將替代 Null 值的值)。
datagridview 還包括一個設計器,用於在設計時配置列樣式。只需從「Properties」(屬性)窗口中選擇「DataGridView Properties」(DataGridView 屬性)鏈接,或者從各種預先創建的樣式設置中選擇「AutoFormat」(自動套用格式)。
自定義單元格格式
單元格格式設置的第一種方法是設置更高級別的 DataGridView、DataGridViewColumn 和 DataGridViewRow 屬性。但是,有時您需要為特定單元格單獨設置樣式。例如,您可能需要在列中的數據大於或小於某個值時標記該列中的數據。例如,突出顯示項目計劃列表中已過去的到期日期,或者在銷售分析中突出顯示負收益率。在這兩種情況下,您需要對單獨的單元格進行格式設置。
了解 DataGridView 對象模型後,您可能想要遍歷特定列中的單元格集合,以尋找要突出顯示的值。這種方法是可行的,但不是最好的方法。關鍵問題是如果用戶編輯了數據,或者如果代碼更改了綁定的數據源,不會對單元格的突出顯示情況進行相應的更新。
幸運的是,datagridview 針對此目的提供了 CellFormatting 事件。CellFormatting 只在顯示單元格值之前引發。通過該事件,可以基於單元格的內容來更新單元格樣式。以下示例檢查特定的客戶並相應地標記單元格:
Private Sub DataGridView1_CellFormatting( _ByVal sender As System.Object, _ByVal e As System.Windows.Forms. _) _Handles DataGridView1.CellFormatting' 檢查該列是否正確。If DataGridView1.Columns(e.ColumnIndex).Name = _"CustomerID" Then' 檢查該值是否正確。If e.Value = "ALFKI" Thene.CellStyle.ForeColor = Color.Rede.CellStyle.BackColor = Color.YellowEnd IfEnd IfEnd Sub
樣式不是影響網格外觀的唯一細節。您還可以隱藏列、在不同位置之間移動列,並「凍結」列,使這些列在用戶滾動到右端時仍然可見。這些功能都是通過 DataGridViewColumn 類的屬性提供的,如下所述:
?
?
?
? minimumwidth:將 Resizable 設置為 False,以防止用戶調整列寬;或者將 MinimumWidth 設置為允許的最小像素數目。
?
按鈕列
datagridview 提供的一種列是 DataGridViewButtonColumn,這種列在每一項旁邊顯示一個按鈕。您可以響應此按鈕的單擊事件,並使用它啟動其他操作或顯示新的表單。
以下示例使用按鈕文字「details...」創建簡單的按鈕列:
' 創建按鈕列。Dim Details As New DataGridViewButtonColumn()Details.Name = "Details"' 關閉數據綁定並顯示靜態文本。'(但是,您可以通過設置 DataPropertyName ' 屬性來使用該表中的屬性。)Details.DisplayTextAsFormattedValue = FalseDetails.Text = "Details..."' 清除標題。Details.HeaderText = ""' 添加該列。DataGridView1.Columns.Insert( _DataGridView1.Columns.Count, Details)
顯示了包含新列的網格。以下代碼會對任何行中的按鈕單擊事件做出反應,並顯示相應的記錄信息:
Private Sub DataGridView1_CellClick( _ByVal sender As System.Object, _ByVal e As System.Windows.Forms. _DataGridViewCellEventArgs) _Handles DataGridView1.CellClickIf DataGridView1.Columns(e.ColumnIndex).Name = _"Details" ThenMessageBox.Show("You picked " & _DataGridView1.Rows(e.RowIndex). _Cells("CustomerID").Value)End IfEnd Sub
比較現實的方案是,在此時創建並顯示一個新窗口,並將有關選定記錄的信息傳遞到這個新窗口,以便查詢並顯示完整的信息。
圖像列
datagridview 提供的另一種列是 DataGridViewImageColumn,這種列將在單元格邊框內顯示一個圖片。您可以設置 DataGridViewImageColumn.Layout 屬性以便配置圖片在單元格中的顯示方式:是將單元格擴展到適當的大小,還是將直接剪裁太大的圖像。
使用 DataGridViewImageColumn 的方法有兩種。首先,您可以採用與 DataGridViewButtonColumn 相同的方式手動創建並添加該列。如果您需要顯示 DataSet 本身不提供的相關圖像信息,則此列非常有用。例如,您可能需要獲取文件名(如 ProctPic002.gif),從網路驅動器讀取相應的文件,然後在網格中顯示該文件。為完成此操作,您需要對 DataGridView 事件(如 CellFormatting)做出反應,以便讀取相應行的圖片、獲取圖像數據並使用該列中的 Value 屬性將其插入。
如果 DataSet 包含不需要任何手動操作的二進制圖片數據,那麼事情會變得更加簡單。例如 SQL Server Pubs 資料庫中的 pub_info 表,該表包含公司徽標。綁定至此表時,您不需要執行任何額外步驟,DataGridView 將自動識別出您正在使用圖像,並會創建所需的 DataGridViewImageColumn。(有關這項技術的示例,請參閱本文的下載內容。)
編輯 DataGridView
眾所周知,datagrid 的用戶輸入功能很不靈活,您幾乎沒有辦法自定義單元格驗證方式及錯誤報告方式。而另一方面,DataGridView 允許您通過對在編輯過程的所有階段中引發的大量不同事件做出反應來控制其行為。
默認情況下,當用戶用滑鼠雙擊單元格或按 F2 鍵時,DataGridView 單元格將進入編輯模式。您還可以通過將 DataGridView.EditCellOnEnter 屬性設置為 True,對 DataGridView 進行配置,以便當用戶移到該單元格後,該單元格立即切換到編輯模式。您還可以使用 DataGridView 的 BeginEdit()、CancelEdit()、CommitEdit() 和 EndEdit() 方法通過編程方式開始和停止單元格編輯。用戶編輯單元格時,行標題將顯示一個鉛筆狀的編輯圖標。
用戶可以通過按 Esc 鍵來取消編輯。如果將 EditCellOnEnter 屬性設置為 True,則單元格仍將處於編輯模式,但是所有更改都將被放棄。要提交更改,用戶只需移到新的單元格,或將焦點切換到其他控制項。如果您的代碼可以移動當前單元格的位置,則此代碼也會提交更改。
為防止單元格被編輯,可以設置 DataGridViewCell、DataGridViewColumn、DataGridViewRow 或 DataGridView 的 ReadOnly 屬性(取決於您是要防止對該單元格進行更改、對該列中的所有單元格進行更改、對該行中的所有單元格進行更改,還是要防止對該表中的所有單元格進行更改)。DataGridView 還提供了 CellBeginEdit 事件,用於取消嘗試的編輯。
處理錯誤
默認情況下,datagridviewtextboxcolumn 允許用戶輸入任何字元,包括當前單元格中可能不允許使用的那些字元。例如,用戶可以在數字欄位中鍵入非數字字元,也可以指定與 DataSet 中定義的 ForeignKeyConstraint 或 UniqueConstraint 沖突的值。DataGridView 採用不同的方式來處理這些問題:
?
?
這些處理方式適用於大多數情況。但是,如果需要,您也可以通過響應 DataGridView.DataError 事件來參與錯誤處理,該事件是在 DataGridView 偵聽到來自數據源的錯誤時引發的。
驗證輸入
驗證是一項與錯誤處理稍有不同的任務。通過錯誤處理,您可以處理由 DataSet 報告的問題。而通過驗證,您可以捕獲您自己定義的錯誤情況,例如 DataSet 中允許的數據在應用程序中卻沒有意義。
當用戶通過導航到新的單元格提交更改時,datagridview 控制項將引發 CellValidating 和 CellValidated 事件。這些事件之後是 RowValidating 和 RowValidated 事件。您可以響應這些事件,檢查用戶輸入的值是否正確,並執行所需的任何後期處理。如果值無效,通常您會通過兩種方式來做出響應,即取消更改和單元格導航(通過將 EventArgs 對象的 Cancel 屬性設置為 True),或者設置某種錯誤文本來提醒用戶。可以將錯誤文本置於其他控制項中,也可以使用相應的 DataGridViewRow 和 DataGridViewCell 的 ErrorText 屬性在 DataGrid 中顯示錯誤文本:
?
?
通常,您會結合使用這兩種屬性,並設置行和單元格中的錯誤消息。以下示例檢查 CompanyName 欄位中太長的文本輸入。如果發現有問題的值,則會將錯誤符號(紅色的感嘆號)添加到單元格中,並顯示描述該問題的工具提示文本。
Private Sub DataGridView1_CellValidating( _ByVal sender As System.Object, _ByVal e As System.Windows.Forms. _) _Handles DataGridView1.CellValidatingIf DataGridView1.Columns(e.ColumnIndex).Name = _"CompanyName" ThenIf CType(e.FormattedValue, String).Length > _50 ThenDataGridView1.Rows( _e.RowIndex).Cells(e.ColumnIndex). _ErrorText = _"The company name is too long."End IfEnd IfEnd Sub
表列約束選擇
使用驗證可以捕獲任何錯誤情況。但是,這種方法不一定是最好的,因為它允許用戶輸入無效的內容,然後在事實出現後嘗試改正無效輸入。更好的解決方案是使用戶在一開始就無法輸入任何無效的內容。
一個常見例子就是您需要將列限制在預定義值列表的范圍內。在此示例中,對於用戶而言,最簡單的辦法是從列表中選擇正確的值,而不要手動鍵入值。最大的優勢在於,您可以使用 DataGridViewComboBoxColumn 非常方便地實現此設計。
可以使用 Items 集合手動為 DataGridViewComboBoxColumn 添加項列表,就像使用 ListBox 一樣。此外,還可以將 DataGridViewComboBoxColumn 綁定到其他數據源。在這種情況下,您可以使用 DataSource 屬性來指定數據源,並使用 DisplayMember 屬性指示列中應顯示的值,以及使用 ValueMember 屬性指定底層列值應使用的值。
為了演示這種情況,來看看下一個有關 Procts 表的示例。此表中的每一條記錄都通過其 CategoryID 欄位鏈接至 Categories 表中的記錄。要更改產品類別,用戶需要記住正確的 ID,並將其輸入到 CategoryID 欄位中。更好的解決方案是使用與 Categories 表綁定的 DataGridViewComboBoxColumn。此列將使用 CategoryName 作為顯示值,但是會將 CategoryID 作為真正的底層值。此列仍將通過 DataPropertyName 屬性與 Procts 表綁定在一起,這意味著當用戶從列表中選擇新的 Category 時,產品記錄的 CategoryID 欄位將自動更改。
以下是配置此表所需的代碼:
' 刪除自動生成的 CategoryID 列。DataGridView1.Columns.Remove("CategoryID")' 為 CategoryID 創建列表列。Dim List As New DataGridViewComboBoxColumn()List.DisplayIndex = 0List.HeaderText = "Category"' 此列綁定至' Procts.CategoryID 欄位。List.DataPropertyName = "CategoryID"' 該列表將從 Categories 表獲得數據。List.DataSource = ds.Tables("Categories")List.DisplayMember = "CategoryName"List.ValueMember = "CategoryID"' 添加該列。DataGridView1.Columns.Add(List)
小結
本文概要介紹了最值得期待的 .NET 新控制項之一:DataGridView。與 DataGrid 不同的是,DataGridView 適用於各種不同的現實情況——無論是要處理數據綁定和用戶編輯,還是僅涉及靜態文本顯示,都可以採用 DataGridView。簡而言之,本文讓您近距離了解了 .NET Framework 提供的一體化數據解決方案,以及 Windows 窗體開發人員升級至 .NET 2.0 的最引人注目的原因之一。
有關 Visual Studio .NET Developer 和 Pinnacle Publishing 的詳細信息,請訪問它們的 Web 站點 http://www.pinpub.com/。
注意:這不是 Microsoft Corporation 的 Web 站點。Microsoft 對其內容不承擔任何責任。
本文轉載自 2005 年 1 月份的 Visual Studio .NET Developer。
⑥ 請教有關VB的datagridview的詳細功能與用法
1、功能:顯示在自定義網格的數據。
2、繼承層次結構
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.DataGridView
命名空間:System.Windows.Forms
程序集:System.Windows.Forms(在 System.Windows.Forms.dll 中)
3、語法:
C#
[("DataSource","DataMember")]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[ComVisibleAttribute(true)]
[DockingAttribute(DockingBehavior.Ask)]
publicclassDataGridView:Control,
ISupportInitialize
C++
[(L"DataSource",L"DataMember")]
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
[ComVisibleAttribute(true)]
[DockingAttribute(DockingBehavior::Ask)]
publicrefclassDataGridView:publicControl,
ISupportInitialize
VB
聲明
<("DataSource","DataMember")>_
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)>_
<ComVisibleAttribute(True)>_
<DockingAttribute(DockingBehavior.Ask)>_
PublicClassDataGridView_
InheritsControl_
ImplementsISupportInitialize
⑦ C#dataGridView使用
首先,不斷更新的 DataGridView 就必須有數據綁定的方法. 每次添加,你可以看作是重新綁定數據.綁定的就是 新數據 + 上次的結果. 我的方法是 把每次輸入文本框的值都放到一個 聲明全局的 字元號串數組里.,然後寫一個方法.獲得SQL字元串 也就是select 語句的查詢條件 這個方法是這樣寫的. public String getWhereString(String[] a)
{
String x = "";
for (int i = 0; i < a.Length; i++)
{
x = x + "id=" + a[i] + " and ";
}
x ="where "+ x.Remove(x.Length - 5);
return x;
} 這個方法得到的結果 就是 "where id=第一次添加的 and id=第二次添加的 and ....." 之後,在數據綁定方法里的select語句條件里,連接上這個方法.
⑧ VS2005Winform中Datagridview的用法
綁定資料庫其實有兩種方法:
1.通過控制項屬性
在DataGridview的DataSource屬性中選擇「添加項目數據源」,彈出「數據源配置」窗體,根據你資料庫的路徑選擇綁定的數據表即可。
2.通過代碼綁定
查詢sql語句獲得DataTable,與DataGridView的DataSoure綁定;
即:DataGridView.DataSource=databale;
獲取該行主鍵值:
首先知道數據的主鍵綁定在dataGridView的哪一列?(通過上面綁定即可知道)
在以下事件中添加代碼:
private void dataGridView_Click(object sender, EventArgs e)
{
if (this.dataGridView1.Rows.Count > 0)//判斷是否有行
{
label.Text = this.dataGridView1.Rows[dataGridView.CurrentCell.RowIndex].Cells[0].Value.ToString();
}
}
註:用一個Label控制項顯示單擊該行的主鍵值,默認主鍵為第一列。
⑨ datagridview的基本用法
datagridview.Rows.Add("學號", "姓名");
存儲是存哪兒?資料庫?簡單的做法就遍歷datagridview里的每一行來執行SQL語句存儲
⑩ 如何使用C#中的DataGridView控制項
DataGridView控制項的使用 新的 DataGridView 是 .NET 2.0 中的一個新控制項,是針對 .NET 1.x 中功能較差的標准 DataGrid 控制項而設計的。Matthew MacDonald 在本文中論述了許多改進,包括:DataGridView 支持大量自定義和細致的格式設置、靈活的大小調整和選擇、更好的性能以及更豐富的事件模型。.NET Framework 的前兩個版本(.NET 1.0 和 .NET 1.1)在數據綁定方面留下了明顯的空白。盡管開發人員擁有一個靈活的可配置模型,可以將幾乎所有的控制項鏈接到幾乎所有的數據源,但卻沒有一種有效的方法來顯示完整的信息表。可以實現此目的的唯一工具就是 DataGrid 控制項,這種控制項非常適合於處理簡單的演示,但是不太適合實際代碼。填補這項空白是 .NET 2.0 的主要目標之一,並且 Microsoft 已經用全新的網格控制項 DataGridView 來實現此目標。DataGridView 有兩個指導原則。首先,其目標是支持常見任務(如主控/詳細列表、驗證和數據格式設置),而不需要您編寫許多代碼。更重要的是,設計過程中始終考慮了擴展性,因此您可以集成所需的專用功能,而不必採用低級別的復雜編程。本頁內容
基本數據綁定
美化 DataGridView
使用 DataGridView 選擇單元格
DataGridView 對象
DataGridView 樣式
自定義單元格格式按鈕列圖像列編輯 DataGridView處理錯誤驗證輸入使用列表列約束選擇
小結基本數據綁定
熟悉 DataGridView 的最佳方法就是實際嘗試一下,無需配置任何屬性。就像 DataGrid 一樣,您可以使用 DataSource 屬性來綁定 DataTable 對象(或從 DataTable 派生的對象)。Dim ds As DataSet = GetDataSet()
DataGridView1.DataSource = ds.Tables(Customers)與 DataGrid 不同的是,DataGridView 一次只能顯示一個表。如果綁定整個 DataSet,則不會顯示任何數據,除非您使用要顯示的表名設置了 DataMember 屬性。DataGridView1.DataSource = ds
DataGridView1.DataMember = Customers基本的 DataGridView 顯示遵循以下幾項簡單的規則:? 為數據源中的每個欄位創建一列。
使用欄位名稱創建列標題。列標題是固定的,這意味著用戶在列表中向下移動時列標題不會滾動出視圖。
支持 Windows XP 視覺樣式。您會注意到列標題具有新式的平面外觀,並且當用戶將滑鼠移到其上時會突出顯示。
DataGridView 還包括幾個您可能不會立即注意到的默認行為:? 允許就地編輯。用戶可以在單元格中雙擊或按 F2 來修改當前值。唯一的例外是將 DataColumn.ReadOnly 設置為 True 的欄位(如當前示例中的 OrderID 欄位)。
支持自動排序。用戶可以在列標題中單擊一次或兩次,基於該欄位中的值按升序或降序對值進行排序。默認情況下,排序時會考慮數據類型並按字母或數字順序進行排序。字母順序區分大小寫。
允許不同類型的選擇。用戶可以通過單擊並拖動來突出顯示一個單元格、多個單元格或多個行。單擊 DataGridView 左上角的方塊可以選擇整個表。
支持自動調整大小功能。用戶可以在標題之間的列分隔符上雙擊,使左邊的列自動按照單元格的內容展開或收縮。
返回頁首美化 DataGridView
DataGridView 的默認外觀僅僅比 DataGrid 略有改進,但是使用幾項快速調整功能,您可以將其顯著改進。其中的一個問題就是列無法自動展開以適合其包含的數據。您可以使用 DataGridView.AutoSizeColumns() 方法以及 枚舉中的某個值來解決此問題。您可以選擇根據標題文本、當前顯示的行或表中的所有行的的寬度來調整列寬。' 根據標題或此列的某一行中
' 最長一段文本的寬度調整
' 列寬。
DataGridView1.AutoSizeColumns( _
.HeaderAndRows)請記住,此方法必須在綁定數據後調用,否則不會產生任何效果。你可能還需要在用戶編輯數據後使用它(可能在響應 DataGridView.CellValueChanged 等事件時)。如果不增加列寬,則可以更改行高。默認情況下,列中的文本會跨越多行。如果您使用 DataGridView.AutoSizeRows() 方法,則行會根據其中的內容調整高度。使用此方法前,您可能希望增加列寬,尤其是在欄位包含大量文本時。例如,以下代碼片段使「說明」列的列寬增加為原列寬的四倍,然後調整行高以容納其內容。DataGridView.Columns(Description).Width *= 4