如何将数据网格view1列行值和数据gridview2列行值复制/添加/移动到Datagridview3列 [英] How to copy/add/move Data grid view1 column row values and Data gridview2 column row values to Datagridview3 columns

查看:80
本文介绍了如何将数据网格view1列行值和数据gridview2列行值复制/添加/移动到Datagridview3列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的朋友们,

我是VB.net的新手。我的SQL数据库报告应用程序项目中有一个问题。我需要显示按Asc或Desc排序的两列。但是只排序了一列,第二列排序到第一列排序。所以第二列没有根据我的逻辑正确排序。但在VB.net中排序操作是正确的。所以我在SQl数据库中创建了两个表。每个数据表都有一列,例如在Datatable1(ZIGMA_PVE_ERROR_D_007_VAL0列)和Datatable2(ZIGMA_NVE_ERROR_D_007_VAL0列)字段中。所以我把这些值带到按ASC / DESC排序的Datagridview 1和2。从这些1和2移动/复制列到Datagridview3。然后我显示这些排序列来报告查看器。这是我的项目要求。对不起,这个英文类型。请指导我这个应用程序。或者任何其他方法请指导我对列进行排序。



Datatable1 Column1中的实际数据

Dear Frnds,
I am new for VB.net. I have one problem in my SQL data base reporting application project. I need to show two columns sorted by Asc or Desc. But only one column is sorted, second column refence to first column sort. So second column not sorted properly as per my logic. But sorting operation correct in VB.net. So i create two tables in SQl data base. Each data table a column is there, For eg in Datatable1 (ZIGMA_PVE_ERROR_D_007_VAL0 column) and Datatable2 (ZIGMA_NVE_ERROR_D_007_VAL0 column) fields. So i take these values to Datagridview 1 and 2 sorted by ASC/DESC. From these 1 and 2 move/copy the columns to Datagridview3. then i show these sorted columns to report viewer. This is my Project requirement. Sorry for this english type. Kindly guide me for this application. Or any other method pls guide me to sort the column.

Actual Data in Datatable1 Column1

2
7
6
1
5
4
3





Datatable2 Column1中的实际数据



Actual Data in Datatable2 Column1

42
61
51
40
10
30
20





排序结果应该是这样的数据gridview3第1列和第2列



Sorted Result should be like this in data gridview3 Column 1 And Column 2

1    10
2    20
3    30
4    40
5    42
6    51
7    61





以下是我的代码,但它不是排序选择查询本身和 movingata sub不工作

这里我为行写moveata查询。但我需要列移动数据



指导我请。



谢谢和问候

Saravanakumar S





The following is my code but it is not wrking for sorting select query itself and movedata sub not working
Here i write movedata query for rows. But i need columns move data

Guide me pls.

Thanks and Regards
Saravanakumar S

Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WinForms

Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'DataGridView1.Hide()
        'DataGridView2.Hide()
        'DataGridView3.Hide()
        DataGridView3.ColumnCount = 2
        DataGridView3.Columns(0).Name = "GAMMA_POS"
        DataGridView3.Columns(1).Name = "GAMMA_NEG"
        Dim connetionString As String
        Dim connection As SqlConnection
        Dim adapter As SqlDataAdapter
        Dim ds As New DataSet
        Dim sql As String
        connetionString = "Data Source=SARAVANAKUMAR\CIMPLICITY;Initial Catalog=CIMPLICITY;User ID=sa;Password=CIMhmi_123"
        connection = New SqlConnection(connetionString)
        
        sql = "select * from Gamma_Pos_Dev where (timestamp >= '" & Form1.DateTimePicker1.Value.ToString("yyyy/MM/dd HH:mm:ss") & "' and timestamp <= '" & Form1.DateTimePicker2.Value.ToString("yyyy/MM/dd HH:mm:ss") & "' AND PASS_NUMBER_VAL0 = '" & Form1.TextBox1.Text & "' AND JOB_ID = '" & Form1.TextBox2.Text & "') ORDERBY ZIGMA_PVE_ERROR_D_007_VAL0 ASC;"
        Try
            connection.Open()
            adapter = New SqlDataAdapter(sql, connection)
            adapter.Fill(ds)
            connection.Close()
            DataGridView1.DataSource = ds.Tables(0)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        sql = "select * from Gamma_Neg_Dev where (timestamp >= '" & Form1.DateTimePicker1.Value.ToString("yyyy/MM/dd HH:mm:ss") & "' and timestamp <= '" & Form1.DateTimePicker2.Value.ToString("yyyy/MM/dd HH:mm:ss") & "' AND PASS_NUMBER_VAL0 = '" & Form1.TextBox1.Text & "' AND JOB_ID = '" & Form1.TextBox2.Text & "') ORDERBY ZIGMA_NVE_ERROR_D_007_VAL0 ASC;"

        Try
            connection.Open()
            adapter = New SqlDataAdapter(sql, connection)
            adapter.Fill(ds)
            connection.Close()
            DataGridView2.DataSource = ds.Tables(0)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        MOVEDATA(DataGridView1, DataGridView3)
        MOVEDATA(DataGridView2, DataGridView3)




        '---------------REPORT VIEWER --------------------------------"

        Dim dt As New DataTable()
        'dt.Columns.Add("timestamp", GetType(String))
        dt.Columns.Add("ZIGMA_VE_ERROR_DEVIA_VAL0", GetType(String))
        dt.Columns.Add("ZIGMA_VE_ERROR_D_007_VAL0", GetType(String))
        For Each dgr As DataGridViewRow In DataGridView3.Rows
            dt.Rows.Add(dgr.Cells(0).Value, dgr.Cells(1).Value)

        Next
        ds.Tables.Add(dt)
        ' ds.WriteXmlSchema("Sample.xml")
        ReportViewer1.LocalReport.DataSources.Item(0).Value = dt
        ReportViewer1.RefreshReport()
        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub MOVEDATA(ByVal SOURCE As DataGridView, ByVal DES As DataGridView)
        For Each rows In SOURCE.DataSource
            Dim cell As DataGridViewCellCollection = rows.cells
            Dim row As String() = New String() {cell(0).Value, cell(1).Value}
            DES.Rows.Add(row)
        Next


    End Sub
End Class

推荐答案

错误的方法!



不要使用 DataGridViews 对象!你必须处理数据!



你可以将数据加入到单个结果中:

Wrong approach!

Do not work on DataGridViews objects! You have to work on data!

You can join data into single result:
Dim result = (From r1 In dt1.AsEnumerable().OrderBy(Function(x) x.Field(Of Integer)("ZIGMA_VE_ERROR_DEVIA_VAL0")).Select(Function(r, x) New With {.Value = r.Field(Of Integer)("ZIGMA_VE_ERROR_DEVIA_VAL0"), .Index = x+1}) _
    Join r2 In dt2.AsEnumerable().OrderBy(Function(x) x.Field(Of Integer)("ZIGMA_VE_ERROR_D_007_VAL0")).Select(Function(r, x) New With {.Value = r.Field(Of Integer)("ZIGMA_VE_ERROR_D_007_VAL0"), .Index = x+1}) _
    On r1.Index equals r2.Index _
    Select New With {.Index = r1.Index, .Value1 = r1.Value, .Value2 = r2.Value}).ToList()





结果:





Result:

Index Value1 Value2
1       1       10
2       2       20
3       3       30
4       4       40
5       5       42
6       6       51
7       7       61





现在,您可以将数据复制到 DataTable 使用 CopyToDataTable 方法对象。怎么实现呢?请参阅:从查询创建DataTable(LINQ to DataSet) [ ^ 如何:实施CopyToDataTable< t>通用类型T不是DataRow的地方 [ ^ ]



Now, you're able to copy data into DataTable object via using CopyToDataTable method. How to implement it? Please, see: Creating a DataTable From a Query (LINQ to DataSet)[^] and How to: Implement CopyToDataTable<t> Where the Generic Type T Is Not a DataRow[^]


这篇关于如何将数据网格view1列行值和数据gridview2列行值复制/添加/移动到Datagridview3列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆