【发布时间】:2010-12-30 01:06:24
【问题描述】:
我是 ASP.NET 的新手。
我正在开发 ASP.NET C# web 表单,它动态创建 GridView 组件并使用从我的 web 服务接收到的数据填充它们。
我在服务器端(cs 文件)中以编程方式创建这些 GridView 组件 - 它必须灵活 - 1 个 GridView,有时 10 个 GridView 组件。
当我尝试添加分页时会出现问题 - 每当用户单击“下一页”页面时,整个页面都会因为 postBack 而刷新,并且我丢失了所有数据并且页面返回空白/空.
我使用PlaceHolder 来保存GridView 组件,在寻找解决方案时,我发现UpdatePanel 是一个更好的选择——据我所知,页面可以部分刷新——这意味着只有UpdatePanel必须刷新...但它不起作用。
以下代码示例是我的测试,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();
}
}
谢谢。
【问题讨论】:
标签: c# asp.net ajax gridview updatepanel