我是ASP.NET新手。UpdatePanel或PlaceHolder组件中的GridView分页
我正在开发ASP.NET C#web表单,它动态创建GridView
组件并使用从我的web服务接收的数据填充它们。
我以编程方式在服务器端(cs文件)中创建这些GridView
组件 - 它必须灵活 - 1个GridView,有时需要10个GridView
组件。
当我尝试添加分页时会出现问题 - 每当用户单击“下一页”页面时,整个页面因为postBack而被刷新,我将丢失所有数据并返回页面空白/空。
我用PlaceHolder
举行GridView
组件,而寻找解决的办法,我发现的UpdatePanel作为一个更好的选择 - 因为据我了解页面可以部分更新 - 这意味着,只有UpdatePanel
已被刷新。 ..但它不起作用。
以下代码示例是我的TEST,UpdatePanel是在客户端发起的唯一组件(.aspx
页面),其余的以编程方式在.cs
中启动。
我该如何解决上述问题?
为什么整个页面都会刷新,并且我丢失了我的数据? 你能推荐别的方法吗?可以提供我任何代码示例?
如果我不重建GridView
,这是行不通的......
这里是我的Default.aspx.cs
public partial class TestAjaxForm : System.Web.UI.Page
{
DataTable table;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
bindGridView();
}
public void bindGridView()
{
GridView gridView1 = new GridView();
gridView1.AutoGenerateColumns = true;
gridView1.PageSize = 2;
gridView1.AllowPaging = true;
gridView1.PagerSettings.Mode = PagerButtons.Numeric;
gridView1.PagerSettings.Position = PagerPosition.Bottom;
gridView1.PagerSettings.PageButtonCount = 10;
gridView1.PageIndexChanging += new GridViewPageEventHandler(this.GridView1_PageIndexChanging);
table = new DataTable();
table.Columns.Add("FirstName");
table.Columns.Add("LastName");
DataRow row = table.NewRow();
row["FirstName"] = "John";
row["LastName"] = "Johnoson";
table.Rows.Add(row);
row = table.NewRow();
row["FirstName"] = "Johnny";
row["LastName"] = "Marley";
table.Rows.Add(row);
row = table.NewRow();
row["FirstName"] = "Kate";
row["LastName"] = "Li";
table.Rows.Add(row);
panel.ContentTemplateContainer.Controls.Add(gridView1);
gridView1.DataSource = table;
gridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView gridView1 = (GridView)sender;
gridView1.PageIndex = e.NewPageIndex;
gridView1.DataSource = table;
gridView1.DataBind();
}
}
谢谢。
嗨,布赖恩,谢谢。但正如我上面写的,我正在编程创建gridView。我知道有一种方法来处理回发和刷新只有更新面板,而不是整个页面...我认为这是UpdatePanel的主要原因之一。 – John 2009-12-26 02:43:36
我在说的是,你必须在每一页加载时重新创建Grid,这就是问题所在...... – 2009-12-26 03:50:50
如果可以修改页面以使用该页面,则可以使用AutoGenerateColumns在页面上静态地使用GridView方法...但只有你知道需求。对困惑感到抱歉。 – 2009-12-26 03:53:37