none
怎样令datagridview2显示datagridview1选定的内容 RRS feed

  • 问题

  • vb2005中,datagridview1是显示查询结果,假如有5条记录,我选定第一行,第三行,再按button(确定)按钮,那么datagridview2就显示datagridview1选定的两行内容。那么这个button事件怎么写?选定的行是随意选定的,可能只选定第2行,可能同时选定第1和第3行。

    补充说一下我的题意,datagridview1是显示查询物料的,假如我在text里输入“电视”进行查询,查询结果是TCL电视,长虹电视,乐声电视,在datagridview1里显示出来,假如我在datagridview1里选定TCL电视,乐声电视,按button按钮,那么datagridview2里就显示TCL电视,乐声电视

    2008年11月6日 8:24

答案

  • Code Snippet

    for i=0 to datagridview1.selectrows.count-1

    datagridview2.rows.add

    datagridview2.rows(datagridview2.rows.count-1).cells(0).value=datagridview1.rows(i).cells(0).values

    next

     

     

     

    2008年11月6日 8:33
    版主
  • Code Snippet

    最初用C#写的,测试没有问题。

    private void Form1_Load(object sender, EventArgs e)
    {
      // TODO: 这行代码将数据加载到表“jGroup2DataSet.B_Article”中。您可以根据需要移动或移除它。
      this.b_ArticleTableAdapter.Fill(this.jGroup2DataSet.B_Article);

      foreach (DataGridViewColumn c1 in dataGridView1.Columns)
      {
        DataGridViewColumn c2 = (DataGridViewColumn)c1.Clone();

        dataGridView2.Columns.Add(c2);
      }



    }

    private void button1_Click(object sender, EventArgs e)
    {

      //先清空旧的
      for (int i = dataGridView2.Rows.Count-1; i>0; i--)
      {
        dataGridView2.Rows.Clear();
        dataGridView2.Update();
      }
     
      Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);

      if (selectedRowCount > 0)
      {
        for (int i = 0; i < selectedRowCount; i++)
        {
          DataGridViewRow dvr = CloneWithValues(dataGridView1.Rows[dataGridView1.SelectedRows[i].Index]);
          dataGridView2.Rows.Add(dvr);
        }
      }

    }

    public DataGridViewRow CloneWithValues(DataGridViewRow row)
    {
      DataGridViewRow clonedRow = (DataGridViewRow)row.Clone();
      for (Int32 index = 0; index < row.Cells.Count; index++)
      {
        clonedRow.Cells[index].Value = row.Cells[index].Value;
      }
      return clonedRow;
    }



    2008年11月6日 9:05
    版主

全部回复

  • Code Snippet

    for i=0 to datagridview1.selectrows.count-1

    datagridview2.rows.add

    datagridview2.rows(datagridview2.rows.count-1).cells(0).value=datagridview1.rows(i).cells(0).values

    next

     

     

     

    2008年11月6日 8:33
    版主
  • Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
       
        For Each c1 As DataGridViewColumn In dataGridView1.Columns
            Dim c2 As DataGridViewColumn = DirectCast(c1.Clone(), DataGridViewColumn)       
            dataGridView2.Columns.Add(c2)
        Next
       
       
       
    End Sub

    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
       
        '先清空旧的
        For i As Integer = dataGridView2.Rows.Count - 1 To 1 Step -1
            dataGridView2.Rows.Clear()
            dataGridView2.Update()
        Next
       
        Dim selectedRowCount As Int32 = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)
       
        If selectedRowCount > 0 Then
            For i As Integer = 0 To selectedRowCount - 1
                Dim dvr As DataGridViewRow = CloneWithValues(dataGridView1.Rows(dataGridView1.SelectedRows(i).Index))
                dataGridView2.Rows.Add(dvr)
            Next
        End If
       
    End Sub

    Public Function CloneWithValues(ByVal row As DataGridViewRow) As DataGridViewRow
        Dim clonedRow As DataGridViewRow = DirectCast(row.Clone(), DataGridViewRow)
        For index As Int32 = 0 To row.Cells.Count - 1
            clonedRow.Cells(index).Value = row.Cells(index).Value
        Next
        Return clonedRow
    End Function

    2008年11月6日 9:04
    版主
  • Code Snippet

    最初用C#写的,测试没有问题。

    private void Form1_Load(object sender, EventArgs e)
    {
      // TODO: 这行代码将数据加载到表“jGroup2DataSet.B_Article”中。您可以根据需要移动或移除它。
      this.b_ArticleTableAdapter.Fill(this.jGroup2DataSet.B_Article);

      foreach (DataGridViewColumn c1 in dataGridView1.Columns)
      {
        DataGridViewColumn c2 = (DataGridViewColumn)c1.Clone();

        dataGridView2.Columns.Add(c2);
      }



    }

    private void button1_Click(object sender, EventArgs e)
    {

      //先清空旧的
      for (int i = dataGridView2.Rows.Count-1; i>0; i--)
      {
        dataGridView2.Rows.Clear();
        dataGridView2.Update();
      }
     
      Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);

      if (selectedRowCount > 0)
      {
        for (int i = 0; i < selectedRowCount; i++)
        {
          DataGridViewRow dvr = CloneWithValues(dataGridView1.Rows[dataGridView1.SelectedRows[i].Index]);
          dataGridView2.Rows.Add(dvr);
        }
      }

    }

    public DataGridViewRow CloneWithValues(DataGridViewRow row)
    {
      DataGridViewRow clonedRow = (DataGridViewRow)row.Clone();
      for (Int32 index = 0; index < row.Cells.Count; index++)
      {
        clonedRow.Cells[index].Value = row.Cells[index].Value;
      }
      return clonedRow;
    }



    2008年11月6日 9:05
    版主