将项目从一个GridView复制到另一个GridView

本文关键字:GridView 一个 复制 另一个 项目 | 更新日期: 2023-09-27 18:13:36

我有一个web用户控件,它有一个3列的表1) GridView在第一;2)过滤选项(文本框)在第二,3)和另一个GridView在第三。

当我在过滤器(文本框)中输入文本时,一些行从数据库中选择,并显示在GridView的第三列中。这个GridView有选择按钮,当它被按下时,我想要那行(或只是一些列)被添加到GridView的第一列。

据我所知,在这些情况下通常使用DataTable。我的代码是:

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    DataTable tempTable = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        tempTable.Columns.Add("ObjectID");
        tempTable.Columns.Add("Name");
        tempTable.Columns.Add("Price");
        currentDay.DataSource = tempTable;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    }
    protected void objectChooser_SelectedIndexChanged(
        object sender, EventArgs e)
    { 
        DataRow newRow = tempTable.NewRow();
        newRow["ObjectID"] = objectChooser.SelectedRow.Cells[0].Text;
        newRow["Name"] = objectChooser.SelectedRow.Cells[1].Text;
        newRow["Price"] = objectChooser.SelectedRow.Cells[2].Text;           
        tempTable.Rows.Add(newRow);                        
        currentDay.DataBind();
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        DataClasses1DataContext dc = new DataClasses1DataContext();
        var objects = from p in dc.VisitingObjects
                  where p.City == tbCityFilter.Text
                  select p;
        objectChooser.DataSource = objects;
        objectChooser.DataBind();
    }
}

但是这里有问题。当我按下选择按钮(在GridView)第一次,它的工作(新值被添加到第一个GridView,但在那之后,按下选择按钮只是改变第一个GridView的值,但没有新的行被添加。

你能告诉我我的代码有什么问题吗,或者有更好的方法来使用从GridView1到GridView2的复制值?

将项目从一个GridView复制到另一个GridView

我觉得我以前说过……

你需要把你的DataTable存储在一个不会在回发之间消失的地方。会话可能是一个很好的开始。

objects = Session["data"]; //cast this
if (objects == null)
    //init objects to a new list of your obj type
objects = objects.Union (
    //your code for filtering grid rows
    );
Session["data"] = objects;