데이터 소스 컨트롤을 사용하지 않고 gridview에서 사용자 지정 페이지 매김을 구현하려고합니다. 지금까지 좋은/완전한 튜토리얼을 찾지 못했습니다. 여기Entity Framework를 사용하여 데이터 소스 컨트롤이없는 asp.net에서 사용자 지정 페이징
내가있는 gridview를 만드는 오전 방법은 다음 버튼을 클릭하면
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="10"
onpageindexchanging="GridView1_PageIndexChanging" ShowFooter="True">
</asp:GridView>
이 그리드가 채워집니다. 데이터베이스에서 행 어떻게 한 페이지 만 기록을 가져올 수 있습니다 여전히 페이징을 보여, 목록 상자 컨트롤
protected void btnSearch_Click(object sender, EventArgs e)
{
using (context = new TrackForceDataEntities())
{
try
{
string[] arr = lstStates.Items.Cast<ListItem>().Select(i => i.Text).ToArray();
var searchResults = context.data_vault.Where(d => arr.Contains(d.STATE)).OrderByDescending(d=>d.STATE);
GridView1.DataSource = searchResults;
GridView1.DataBind();
}
catch (Exception exception)
{
Response.Write(exception.Message);
}
}
}
가 모든 레코드를 가져오고 있기 때문에 위의 쿼리가 매우 느립니다의 항목에 집어 기반으로해야합니까?
다음은 gridview PageIndexChanging
이벤트입니다. 페이지 2를 클릭하면 페이지 2 행이 표시되지만 페이징 링크는 사라집니다.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
using (context = new TrackForceDataEntities())
{
try
{
// var searchResults = context.data_vault.Where(d => d.STATE == lstStates.SelectedItem.Text).OrderBy(d => d.dv_id).Take(10).Skip(2);
//var selection = lstStates.Items(i => i.Text).ToArray();
//var result = context.data_vault.Where(x => selection.Contains(x.Prop));
string[] arr = lstStates.Items.Cast<ListItem>().Select(i => i.Text).ToArray();
var result = context.data_vault.Where(d => arr.Contains(d.STATE)).OrderByDescending(d => d.STATE).Skip(e.NewPageIndex * GridView1.PageSize)
.Take(GridView1.PageSize)
.ToList();
//var result = context.data_vault.Where(d => d.STATE == lstStates.SelectedItem.Text).OrderBy(d => d.STATE).Skip(e.NewPageIndex * GridView1.PageSize).Take(GridView1.PageSize).ToList();
//// this is very important part too
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = result;
GridView1.DataBind();
}
catch (Exception exception)
{
Response.Write(exception.Message);
}
}
}
링크 문제를 해결하는 방법을 알아 냈습니까? 나는 똑같은 일을하고있다. 꽤 일반적인 시나리오 인 것 같고 많은 문서를 보지 못했습니다. – scojomodena