【问题标题】:How to append data from one GridView to second GridView?如何将数据从一个 GridView 附加到第二个 GridView?
【发布时间】:2016-12-16 15:31:10
【问题描述】:

我有 GridView1,其结果在我的事件触发后会发生变化。 我需要将 GridView1 中的数据追加(不是复制)到我的 GridView 并保存 GridView1 中的所有结果。

这是我的代码(不完整)和我的目标:

      private void BindQuestions(int quiz)
        {
       //i have fuction that run this each time with difrant id
       //and GridView1 thatshows me result each time
       DataSet oDs = SqlHelper.ExecuteDataset(sCon, "Ps_Quiz_GetQsns",quiz));
       GridView1.DataSource = oDs.Tables[0];
       GridView1.DataBind();
        }

 //my goal
          private void appendToGridView2 ()
          {
        //i need some think like this
        GridView2.DataSource.append(GridView1.DataSource);
        GridView2.DataBind();
          }

更新:

这是完整的解决方案:

            bool DoMerge =false//this is global and static
            if (Session["currentDataSet"] == null)
            {
                Session["currentDataSet"] = SqlHelper.ExecuteDataset(sCon, "Ps_Quiz_GetQsns", Int32.Parse(ddlQuestionTypeName.SelectedValue), Int32.Parse(ddlQuestionSubTypeName.SelectedValue)); ;
            }
            QuestionsCollection = (DataSet)(Session["currentDataSet"]);
            if (DoMerge) QuestionsCollection.Merge(SqlHelper.ExecuteDataset(sCon, "Ps_Quiz_GetQsns",quiz);
            DoMerge = true;
            Session["currentDataSet"] = QuestionsCollection;
            GridViewAllQuestions.DataSource = QuestionsCollection;
            GridViewAllQuestions.DataBind()

【问题讨论】:

    标签: c# asp.net .net gridview


    【解决方案1】:

    当您设置作为服务器端事件的 DataSource 时,页面会再次呈现并创建每一行,因此您可以附加要绑定的 DataTables。 当前的DataSource应该保存在Session中

    Session["currentDataSet"] = dataTableName;
    dataTableNew.Merge((DataTable)Session["currentDataSet"]);
    GridView2.DataSource = dataTableNew;
    GridView2.DataBind();
    

    下面将提供一些帮助: How to append one DataTable to another DataTable

    【讨论】:

      【解决方案2】:

      将数据从gridview1复制到gridview2的代码

      protected void Button1_Click(object sender, EventArgs e)
          {
              var dt2 = new DataTable();
              dt2.Columns.Add("col1", typeof(string));
              dt2.Columns.Add("col2", typeof(string));
              /....
      
              int row = gv1.Rows.Count;
              int col = gv1.Rows[0].Cells.Count;
      
              for (int i = 0; i < row; i++)
              {
                  DataRow rw = dt2.NewRow();
                  for (int j = 0; j < col; j++)
                  {
                      rw[j] = gv1.Rows[i].Cells[j].Text;
                  }
                  dt2.Rows.Add(rw);
              }
      
             gv2.DataSource = dt2;
             gv2.DataBind();
          }
      

      【讨论】:

        【解决方案3】:

        如果你创建会怎样:

        1. 来自现有 gridView1 dataSetGridView1 的数据集
        2. 来自 gridView2 的数据集 dataSetGridView2

          GridView2.DataSource = dataSetGridView1.Merge(dataSetGridView2);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          • 2020-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多