Я новичок в ASP.NET.
Я занимаюсь разработкой веб-формы ASP.NET C #, которая динамически создает GridView
компоненты и заполняет их, используя данные, полученные от моего веб-сервиса.
Я создаю эти GridView
компоненты программно на стороне сервера (файл cs) - он должен быть гибким - 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();
}
}
Спасибо.