2014-10-07 3 views
0

У меня есть DataGridView, и я хочу, чтобы передать эту информацию в DataTable или другое место, я пытаюсь этотянуть данные из DataGridView в VB

Dim dt As DataTable 
    dt = CType(DataGridView1.DataSource, DataTable) 

Но я только получаю нуль, какие-либо идеи? Я не знаю, как получить информацию от datagridview.

ответ

0

Я получил решение, это немного грязный, но ... это работает для меня

Dim valor As Integer 
    valor = DataGridView1.RowCount 
    valor = valor - 2 

    For indice As Integer = 0 To valor 
     ' DataGridView1.Item(0, indice).Value.ToString() 
     ' DataGridView1.Item(1, indice).Value.ToString() 
     ' in my case i only have two colums but if tyou have more you can use double for 
    Next 

Надеюсь, что это поможет кому-то :)

+0

вы можете легко заполнить свой datatable или все, что вам нужно ... Удачи всем – user3215218

0

Вы можете попробовать это. dt = TryCast(DataGridView1.DataSource, DataTable) Или

Dim dt As New DataTable 
dt = (DirectCast(DataGridView1.DataSource, DataTable)) 

Или

Используйте следующие функции для получения Datatable из сетки

public DataTable DataGridView2DataTable(DataGridView dgv, String tblName, int minRow=0){ 

    DataTable dt = new DataTable(tblName); 

    // Header columns 
    foreach (DataGridViewColumn column in dgv.Columns) 
    { 
    DataColumn dc = new DataColumn(column.Name.ToString()); 
    dt.Columns.Add(dc); 
    } 

    // Data cells 
    for (int i = 0; i < dgv.Rows.Count; i++) 
    { 
    DataGridViewRow row = dgv.Rows[i]; 
    DataRow dr = dt.NewRow(); 
    for (int j = 0; j < dgv.Columns.Count; j++) 
    { 
     dr[j] = (row.Cells[j].Value == null) ? "" : row.Cells[j].Value.ToString(); 
    } 
    dt.Rows.Add(dr); 
    } 

    // Related to the bug arround min size when using ExcelLibrary for export 
    for (int i = dgv.Rows.Count; i < minRow; i++) 
    { 
    DataRow dr = dt.NewRow(); 
    for (int j = 0; j < dt.Columns.Count; j++) 
    { 
     dr[j] = " "; 
    } 
    dt.Rows.Add(dr); 
    } 
    return dt; 
} 
+0

нет, Visual Basic сэр, у меня есть решение прямо сейчас ... – user3215218

Смежные вопросы