gridview动态绑定后分页的问题
我gridview用了动态绑定,主要是多条件改变查询语句,那这样的话要怎么绑定分页?string sql = "SELECT * FROM auto_news where 1=1";
protected void btnss_Click(object sender, EventArgs e)
{
if (this.txttimestar.Text != "" && this.txttimeover.Text != "")
{
DateTime timestar = Convert.ToDateTime(this.txttimestar.Text);
DateTime timeover = Convert.ToDateTime(this.txttimeover.Text);
int i = DateTime.Compare(timestar, timeover);
if (DateTime.Compare(timestar, timeover) == 1)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('开始时间不能大于结束时间,请重选!');location.href='newsAdmin.aspx';</script>");
}
}
string aa = sql;
if (this.txtss.Text.Trim() != "")
aa += " and newsLong like" + "'%" + txtss.Text.Trim() + "%'";
if (txtusername.Text.Trim() != "")
aa += " and userid=(select id from auto_Users where userName=" + "'" + txtusername.Text.Trim() + "'" + ")";
if (txttimestar.Text != "")
aa += " and creatTime>=" + "'" + txttimestar.Text + "'";
if (txttimeover.Text != "")
aa += " and creatTime<=" + "'" + txttimeover.Text + "'";
if (Convert.ToInt32(this.drpclass.SelectedValue) > 1)
aa += " and [auto_news].pid=" + this.drpclass.SelectedValue;
if (this.drpposition.SelectedIndex > 0)
aa += " and charindex(" + "'" + this.drpposition.SelectedValue + "'" + " ,htmlposition)>0";
if (this.drppd.SelectedIndex > 0)
aa += " and [auto_news].cid=" + drppd.SelectedValue;
if (this.drpzt.SelectedIndex > 0)
aa += " and [auto_news].sid=" + drpzt.SelectedValue;
gridband(aa);
}
protected void lbtysh_Click(object sender, EventArgs e)
{
String aa = sql + " and [auto_news].ifPost=1";
gridband(aa);
}
protected void gridband(string sql)
{
List<Autonew> an = AutonewManager.GetAllAutonewsListBySQL(sql);
grvnews.DataSource = an;
grvnews.DataBind();
}
protected void grvnews_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView gvw = (GridView)sender;
if (e.NewPageIndex < 0)
{
TextBox pageNum = (TextBox)gvw.BottomPagerRow.FindControl("txtNewPageIndex");
int Pa = int.Parse(pageNum.Text);
if (Pa <= 0)
{
gvw.PageIndex = 0;
}
else
{
gvw.PageIndex = Pa - 1;
}
}
else
{
gvw.PageIndex = e.NewPageIndex;
}
gvw.DataBind();
}
这样写的话点下一页是没有值。。求高手帮忙解决下。谢谢了 --------------------编程问答-------------------- --------------------编程问答-------------------- 晕什么。。。 --------------------编程问答-------------------- 我一般用PagedDataSource控件来处理分页, 感觉很好用. 可以了解一下.. --------------------编程问答-------------------- 用AspNetPager分页控件吧,挺好 --------------------编程问答-------------------- 有没有手动绑定的代码? --------------------编程问答-------------------- 不要一次性取出全部的数据。对操作数据量大的表,这样做是很可怕的 --------------------编程问答-------------------- protected void Page_Load(object sender, EventArgs e)
{
webTitle.Text = new MyShare().GetWebTitle();
//验证Session
if (!new MyShare().CheckSession(SovellModel.Common.Config.OverTimeString, SovellModel.Common.Config.DefaultLoginPageForMerch, SovellModel.Common.Config.SessionIDForMerch)) return;
if (!IsPostBack)
{
ViewState["pageIndex"] = 1;
ViewState["pageSize"] = 15; //每页显示15条数据
BindInfo();
}
lbtnSearch.Attributes["onclick"] = "javascript:return CheckSettleSearch(" + txtStartTime.ClientID + "," + txtEndTime.ClientID + ")";
}
/// <summary>
/// 地址栏ID加密
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
//public string CryptoID(object obj)
//{
// return EncryptDecrypt.DesEncrypt(obj.ToString(), "");
//}
/// <summary>
/// 前往搜索页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnGO_Click(object sender, EventArgs e)
{
if (this.txtPageIndex.Text == string.Empty) return;
if (Convert.ToInt32(txtPageIndex.Text.Trim()) > Convert.ToInt32(ViewState["pCount"]) || Convert.ToInt32(txtPageIndex.Text.Trim()) <= 0)
{
return;
}
Pager = Convert.ToInt32(txtPageIndex.Text.Trim());
BindInfo();
}
/// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnFirst_Click(object sender, EventArgs e)
{
Pager = 1;
BindInfo();
}
/// <summary>
/// 上一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnPrev_Click(object sender, EventArgs e)
{
--Pager;
BindInfo();
}
/// <summary>
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnNext_Click(object sender, EventArgs e)
{
++Pager;
BindInfo();
}
/// <summary>
/// 尾页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnLast_Click(object sender, EventArgs e)
{
Pager = Convert.ToInt32(ViewState["pCount"]);
BindInfo();
}
#region Private Methods
/// <summary>
/// 绑定订单信息
/// </summary>
private void BindInfo()
{
SearchOrderMethod();
SetNavigateBtnEnable();
this.ltCount.Text = Convert.ToString(ViewState["rCount"]);
this.ltPage.Text = ViewState["pageIndex"] + "/" + ViewState["pCount"];
}
/// <summary>
/// 查询订单
/// </summary>
private void SearchOrderMethod()
{
//验证Session
if (!new MyShare().CheckSession(UpdatePanel1, SovellModel.Common.Config.OverTimeString, SovellModel.Common.Config.DefaultLoginPageForMerch, SovellModel.Common.Config.SessionIDForMerch)) return;
int merchid = Convert.ToInt32(Session[SovellModel.Common.Config.SessionIDForMerch]);
string no = null;
string starttime = null;
string endtime = null;
no = txtNo.Text.Trim();
if (txtEndTime.Text.Trim() != "")
endtime = txtEndTime.Text.Trim();
if (txtStartTime.Text.Trim() != "")
starttime = txtStartTime.Text.Trim();
int pageCount = 0;
int recordCount = 0;
IList<SH_Settle> settle = SettleBLL.GetSettleInfoByCondition(merchid, no, starttime, endtime, Pager, PagerSize, ref pageCount, ref recordCount);
ViewState["pCount"] = pageCount;
ViewState["rCount"] = recordCount;
this.rpt.DataSource = settle;
this.rpt.DataBind();
this.ltCount.Text = Convert.ToString(ViewState["rCount"]);
this.ltPage.Text = ViewState["pageIndex"] + "/" + ViewState["pCount"];
}
/// <summary>
/// 设置页数
/// </summary>
private int Pager
{
get { return Convert.ToInt32(ViewState["pageIndex"]); }
set { ViewState["pageIndex"] = value; }
}
/// <summary>
/// 设置每页显示记录的数量
/// </summary>
private int PagerSize
{
get { return Convert.ToInt32(ViewState["pageSize"]); }
set { ViewState["pageSize"] = value; }
}
/// <summary>
/// 设置导航键的Enable
/// </summary>
private void SetNavigateBtnEnable()
{
lbtnFirst.Enabled = lbtnLast.Enabled = lbtnPrev.Enabled = lbtnNext.Enabled = true;
int pIndex = Convert.ToInt32(ViewState["pageIndex"]);
int pCount = Convert.ToInt32(ViewState["pCount"]);
int rCount = Convert.ToInt32(ViewState["rCount"]);
if (Convert.ToInt32(ViewState["pCount"]) == 1)
{
lbtnFirst.Enabled = lbtnPrev.Enabled = lbtnLast.Enabled = lbtnNext.Enabled = false;
}
else if (pIndex == 1)
{
lbtnFirst.Enabled = lbtnPrev.Enabled = false;
}
else if (pIndex == pCount)
{
lbtnLast.Enabled = lbtnNext.Enabled = false;
}
}
#endregion
/// <summary>
/// 搜索
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnSearch_Click(object sender, EventArgs e)
{
Pager = 1;
SearchOrderMethod();
SetNavigateBtnEnable();
} --------------------编程问答-------------------- 利用linq的Skip(),Take()可实现
int pageIndex=当前页索引
int pageSize=每页显示的条数
假设list为你的数据源
var pageList=list.Skip((pageIndex-1)*pageSize).Take(pageSize);
--------------------编程问答-------------------- LZ是想用gridView自身的分页 ?
好像有个pageIndexChanging的事件
然后里面可以
this.gvXX.PageIndex = e.NewPageIndex;
dataBind();
如果是分页控件。。那你随意~ --------------------编程问答--------------------
正解! --------------------编程问答-------------------- <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="0" CssClass="gv" EmptyDataText="<span class='msg'>暂无任何玩家信息</span>" PageSize="20" Width="100%" DataKeyNames="UserID" OnPageIndexChanging="GridView1_PageIndexChanging">
</asp:GridView>
cs代码中写GridView1_PageIndexChanging事件
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = 数据绑定;
GridView1.DataBind();
} --------------------编程问答-------------------- 点击看这个问题 --------------------编程问答-------------------- 个人觉得分页还是用存储过程比较好
补充:.NET技术 , ASP.NET