将项目从一个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的复制值?
我觉得我以前说过……
你需要把你的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;