DataTable刷新问题

时间:2013-03-06 08:15:44

标签: c# asp.net

我想从一个数据表到另一个数据表的特定数据我试过这个数据是副本 表但未在DataList中显示

你能建议我解决吗? 我的代码

    DataTable dt1 = new DataTable();
    DataTable dt = frmbal.GetAllForum();

    for (int i = 0; i < dt.Columns.Count;i++ )
        dt1.Columns.Add(dt.Columns[i].Caption );

    // dt1.Rows.Clear();
    DataRow []dr=dt.Select("intParentThreadID="+ Request.QueryString["id"]);
    dt1.Rows.Add (dr);
    dt1.AcceptChanges();
    DataList1.DataSource =dt1;
    DataList1.DataBind();

此代码位于Page Load Event中 在此先感谢

3 个答案:

答案 0 :(得分:0)

试试这个:

foreach (DataRow dr in dt.Rows) {
        dt1.Rows.Add(dr.ItemArray);
}

答案 1 :(得分:0)

没有DataRowCollection.Add方法接受DataRow[]并插入所有行。需要object[]的重载是插入包含这些字段的一条记录。

所以这不起作用:

DataRow []dr=dt.Select("intParentThreadID="+ Request.QueryString["id"]);
dt1.Rows.Add (dr);

您应该使用DataTable.MergeDataTable.Clone(克隆包含列的表格)。

DataTable dt = frmbal.GetAllForum();
DataTable dt1 = dt.Clone();
dt1.Merge(dt);

答案 2 :(得分:0)

Vishal Suthar很好

。但这段代码必须在!IsPostBack

之内

表示样本

protected void Page_Load(object sender, EventArgs e)    
    {    
        if (!IsPostBack)    
        {    
         DataTable dt1 = new DataTable();
         DataTable dt = frmbal.GetAllForum();
         for (int i = 0; i < dt.Columns.Count;i++ )
         dt1.Columns.Add(dt.Columns[i].Caption );
  // dt1.Rows.Clear();
         DataRow []dr=dt.Select("intParentThreadID="+ Request.QueryString["id"]);
         foreach (DataRow dr in dt.Rows) {
         dt1.Rows.Add(dr.ItemArray);
        } 
         dt1.AcceptChanges();
         DataList1.DataSource =dt1;
         DataList1.DataBind();

        }    
    }