gridview分页问题 [英] gridview paging problem
本文介绍了gridview分页问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我网页中的gridview代码
Hi,
thins is gridview code in my webPage
<asp:GridView ID="GridView1" runat="server" BorderStyle="None" OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="True">
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="IdSelector" runat="server" OnCheckedChanged="Button1_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataTextField="title" DataNavigateUrlFields="SubjectId" DataNavigateUrlFormatString="~/Topic/{0}" HeaderText="العنوان"/>
</Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Page.RouteData.Values["Id"] != null /*&& Page.RouteData.Values["index"] != null*/)
{
int id;
if (int.TryParse(Page.RouteData.Values["Id"].ToString(), out id) == true /*&& int.TryParse(Page.RouteData.Values["index"].ToString(), out index) == true*/)
{
Adapter = new SqlDataAdapter("SELECT Subjects.SubjectId,Subjects.Title,AgePeriods.Period,Users.UserName From Subjects INNER JOIN AgePeriods ON Subjects.AgeId = AgePeriods.AgePeriodId INNER JOIN Users ON Subjects.UserId = Users.UserId WHERE CId = '" + id + "' ORDER BY Subjects.SubjectId DESC ", con);
Adapter.Fill(ds, "Subjects");
GridView1.DataSource = ds.Tables["Subjects"];
GridView1.DataBind();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridView1.Rows[i].Cells[1].Visible = false;
GridView1.Rows[i].Cells[2].Visible = false;
}
}
else
{
Response.Redirect("homepage.aspx");
}
}
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
int newPage = e.NewPageIndex;
GridView1.DataSource = ds.Tables["Subjects"];
GridView1.DataBind();
}
分页已启用,但问题是当我将绑定代码添加到!回发块
分页不起作用时,分页或使用!回发,我使用!postBack能够获得选中的复选框。是否有可能使用分页& amp; !postBack?
提前感谢
paging is enabled, but the problem that when i add binding code into !postback block
paging does not work, either paging or using !postback, i use !postBack to be able to get selected checked checkboxes. Is there possible way to use paging & !postBack ?
thanks in advance
推荐答案
好的,试试:
Ok, try:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Page.RouteData.Values["Id"] != null /*&& Page.RouteData.Values["index"] != null*/)
{
int id;
if (int.TryParse(Page.RouteData.Values["Id"].ToString(), out id) == true /*&& int.TryParse(Page.RouteData.Values["index"].ToString(), out index) == true*/)
{
Adapter = new SqlDataAdapter("SELECT Subjects.SubjectId,Subjects.Title,AgePeriods.Period,Users.UserName From Subjects INNER JOIN AgePeriods ON Subjects.AgeId = AgePeriods.AgePeriodId INNER JOIN Users ON Subjects.UserId = Users.UserId WHERE CId = '" + id + "' ORDER BY Subjects.SubjectId DESC ", con);
Adapter.Fill(ds, "Subjects");
GridView1.DataSource = ds.Tables["Subjects"];
GridView1.DataBind();
// add data to session to persist data
Session["SubjectsData"] = ds.Tables["Subjects"];
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridView1.Rows[i].Cells[1].Visible = false;
GridView1.Rows[i].Cells[2].Visible = false;
}
}
else
{
Response.Redirect("homepage.aspx");
}
}
}
}
然后在页面索引更改方法中:
And then in the page index changing method:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
// set your page index on the grid. you were missing this. The grid did not know which page to navigate to.
GridView1.PageIndex = e.NewPageIndex;
// get your data back out of session.
GridView1.DataSource = Session["SubjectsData"];
GridView1.DataBind();
}
这篇关于gridview分页问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文