2009-05-21 81 views

回答

7

我不知道如何做到這一點瓦特/ OA BindingSource的,這裏是如何與一個做到這一點:

var drv = bindingSoure1.Current as DataRowView; 
if (drv != null) 
    var row = drv.Row as MyRowType; 
1

您應該能夠直接投你選擇一行到強類型一行被綁定到DataGridView。

23
DataRowView currentDataRowView = (DataRowView)dgv1.CurrentRow.DataBoundItem 
DataRow row = currentDataRowView.Row 
+0

嗯......對於我來說,選中的行的「DataBoundItem」爲空。 – 2016-06-16 12:21:27

3

有可能通過獲取以下屬性:

this.dataGridView.SelectedRows 

得到一個類型的集合:DataGridViewSelectedRowCollection。它包含以下類型的項目:DataGridViewRow

那麼可以得到bounditem與那些自己鍵入以下方式:

DataGridViewSelectedRowCollection list = this.dataGridViewInventoryRecords.SelectedRows; 
MyType selectedItem = (MyType)list[0].DataBoundItem; //[0] ---> first item 
0

你試試這個。

DataRow row = gridView1.GetDataRow(gridView1.FocusedRowHandle);
if (row != null) { XtraMessageBox.Show(row["ID"].ToString()); } else return;

0

如果您已綁定您的datagridview到表或視圖在一個數據庫中,你可以得到的數據作爲一個強類型的對象。

此答案適用於在設計時使用DataSet連接到數據庫的Windows窗體。示例名稱是DataSet1,示例表名稱是Customer_Info。

// cast the data bound item to DataRowView so you have 
// access to "Row", which 
// has the actual data for the row in typed fields. 
DataRowView drv = dgv.SelectedRows(0).DataBoundItem as DataRowView; 
// run the code and look at the debugger value of drv.Row -- 
// the type will be shown 
// which is the type created by the data binding, representing 
// your table or view 
//{YourDataSetName.YourTableOrViewType} tmpTableData = drv.Row as {YourDataSetName.YourTableOrViewType}; 
DataSet1.Customer_InfoRow tmpTableData = drv.Row as DataSet1.Customer_InfoRow; 

此鏈接是答案。我希望我在上面增加了清晰度和示例。 https://social.msdn.microsoft.com/Forums/windows/en-US/f252e395-58e6-4703-ba7b-0740efcbecf3/can-i-convert-the-selected-row-in-a-bound-datagridview-to-a-typed-datarow?forum=winformsdatacontrols

此鏈接顯示以編程方式添加到數據源的數據,而不是從現有數據庫中提取數據。這讓我成爲答案的一部分: https://msdn.microsoft.com/en-us/library/4wszzzc7(v=vs.110).aspx

0

如果tableadapter未在數據集內部使用,則不可能對datagridview進行強類型訪問。

要訪問強類型的變量時,一個DataGridView通過的BindingSource綁定到數據表中,執行如下:

創建一個新項目。

插入一個名爲ds1的DataSet和一個名爲dt99的DataTable,其中列名爲DataColumn1和DataColumn2,都是字符串類型。

enter image description here

一個DataGridView添加到主窗體,並將其綁定到dt99

enter image description here

從而使dt99BindingSource連接的DataGridView和數據表

enter image description here

添加和事件處理程序的選擇更改DataGridView的,然後將下面的代碼段

私人無效dataGridView1_SelectionChanged(對象發件人,EventArgs的){

ds1.dt99Row d= ((ds1.dt99Row)((DataRowView)dt99BindingSource.Current).Row); 

    Debug.WriteLine(d.DataColumn1 + " " + d.DataColumn2); 

}

現在你強類型的變量(d.DataColumn1和d .DataColumn2)來訪問在datagridview上選擇的單元格

另一個有趣的功能是插入數據集內的數據表提供了一組公共類,例如在處理數據表時,例如

 private void Form1_Load(Object sender, EventArgs e) 
    { 
     ds1.dt99.Adddt99Row("K", "B"); 
     ds1.dt99.Adddt99Row("L", "D"); 
     ds1.dt99.Adddt99Row("M", "F"); 
     ds1.dt99.Adddt99Row("N", "H"); 

     ds1.dt99Row dr = ds1.dt99.Newdt99Row(); 
     dr.DataColumn1 = "X"; 
     dr.DataColumn2 = "Y"; 
     ds1.dt99.Adddt99Row(dr); 

    } 
相關問題