ASP.NET을 처음 사용했습니다.UpdatePanel 또는 PlaceHolder 구성 요소 내의 GridView 페이징
GridView
구성 요소를 동적으로 생성하고 내 웹 서비스에서받은 데이터를 사용하여 작성하는 ASP.NET C# 웹 양식을 개발하고 있습니다.
서버 측 (CS 파일)에 이러한 GridView
구성 요소를 프로그래밍 방식으로 생성합니다. 유연해야합니다 - 1 GridView이고 때로는 10 GridView
구성 요소입니다.
페이지 매김을 추가하려고 할 때 문제가 발생합니다 - 사용자가 "다음"페이지를 클릭 할 때마다 전체 페이지가 포스트 백 때문에 새로 고쳐지고 모든 데이터가 손실되고 페이지가 비어 있음/빈. 단지 UpdatePanel
새로 고칠하는 것을 의미한다 - 내가 페이지를 부분적으로 새로 고칠 수 있습니다 이해까지로 - 해결책을 찾고, 내가 더 나은 대안으로 UpdatePanel을 발견하면서
GridView
구성 요소를 개최
PlaceHolder
을 사용했다. 하지만 작동하지 않습니다.
다음 코드 샘플은 내 테스트입니다. 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();
}
}
당신을 감사합니다.
안녕하세요, Brian, 감사합니다. 그러나 위에서 쓴 것처럼 프로그래밍 방식으로 gridView를 만들고 있습니다. 나는 포스트 백을 처리하고 전체 페이지가 아닌 오직 updatepanel을 새로 고치는 방법이 있다는 것을 이해합니다 ... 이것이 UpdatePanel의 주된 이유 중 하나라고 생각합니다. – John
제가 말하고자하는 것은 모든 페이지로드시 Grid를 다시 만들어야한다는 것입니다. 그게 바로 문제입니다 ... –
AutoGenerateColumns가있는 페이지에서 GridView를 정적으로 사용하는 것은 가능한 경우 페이지를 수정할 수있는 대안입니다 접근 ...하지만 당신은 그 지식을 알 수 있습니다. 혼란을 드려 죄송합니다. –