读书人

20分的一路难题.多条件AspNetPager的

发布时间: 2011-12-22 23:36:25 作者: rapoo

20分的一道难题..多条件AspNetPager的
我用AspNetPager存储过程可以很轻松的分页.
但是如果涉及到多条件查询的话,应该怎么办呢?

以下是我的多条件查询语句.怎么把这些做成AspNetPager分页.或者其它办法分页..
AspNetPager可以不用存储过程来分页吗?直接T-SQL运行..

string str = "select count(lease_id) as [coun] from lease where lease_daodate > getdate() "; //记录条数
if (Select1.Value != "0 ")
{
str += " and city = ' " + county.Value.ToString() + " ' ";
}
if (Select2.Value != "选择 ")
{
str += " and hx = ' " + Select2.Value.ToString() + " ' ";

}
if (Select3.Value != "选择 ")
{
str += " and fitment = ' " + Select3.Value.ToString() + " ' ";

}
if (txprice1.Value != " " || txprice2.Value != " ")
{
str += " and lease_price > ' " + txprice1.Value.ToString() + " ' and lease_price < ' " + txprice2.Value.ToString() + " ' ";
}
str += " order by id desc ";
str1 += " order by id desc ";
str2 += " order by id desc ";


[解决办法]
记住中间要有and,有思路你自己就能写好了
[解决办法]
aspnetpager跟数据源无关,所以你用什么都没关系,只要能根据(当前页\页大小\总数)取分页数据
[解决办法]
AspNetPager应该和存储过程没关系吧,但是分页的存储过程肯定是最好的选择,你可以找一个通用的分页存储过程
[解决办法]
见http://www.cnblogs.com/meetweb/archive/2005/09/13/140239.html
其实最重要的问题就在
Select Top {0} * From User Where user_id Not in ( Select Top {1} user_id From User Order By user_id



使用sql本身已经把要分页的数据取出来。。其实DataGrid只是绑定显示而已。AspNetPager只是做了显示页码等数据显示而已

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack )
{
//求该数据集合的记录总和
SqlDataBase SqlDB=new SqlDataBase(DSN);
string strsql= "Select count(user_id) from User ";
DataSet ds= SqlDB.CreateSet(strsql, "IUser ");
this.AspNetPager1.RecordCount=System.Convert.ToInt32(ds.Tables[0].Rows[0][0]) ;
SqlDB.CloseConnection();
BindData();
}
}

void BindData()
{
SqlDataBase SqlDB=new SqlDataBase(DSN);

int RecordPage=(AspNetPager1.CurrentPageIndex-1)*AspNetPager1.PageSize;
string strsql=String.Format( " Select Top {0} * From User Where user_id Not in ( Select Top {1} user_id From User Order By user_id) ",AspNetPager1.PageSize.ToString(),RecordPage.ToString());
SqlDataAdapter adapter= SqlDB.CreateAdapter(strsql);
DataSet ds=new DataSet();
ds=SqlDB.CreateSet(strsql, "IUser ");
//adapter.Fill(ds,AspNetPager1.PageSize*(AspNetPager1.CurrentPageIndex-1),AspNetPager1.PageSize, "IU_User ");
this.DataGrid1.DataSource=ds.Tables[ "IUser "];
this.DataGrid1.DataBind();
//动态设置用户自定义文本内容
AspNetPager1.CustomInfoText= "记录总数: <font color=\ "blue\ "> <b> "+AspNetPager1.RecordCount.ToString()+ " </b> </font> ";
AspNetPager1.CustomInfoText+= " 总页数: <font color=\ "blue\ "> <b> "+AspNetPager1.PageCount.ToString()+ " </b> </font> ";
AspNetPager1.CustomInfoText+= " 当前页: <font color=\ "red\ "> <b> "+AspNetPager1.CurrentPageIndex.ToString()+ " </b> </font> ";
}

private void AspNetPager1_PageChanged(object src, Wuqi.Webdiyer.PageChangedEventArgs e)
{
AspNetPager1.CurrentPageIndex=e.NewPageIndex;
BindData();
System.Text.StringBuilder sb=new StringBuilder( " <script Language=\ "Javascript\ "> <!--\n ");
sb.Append( "var el=document.all; ");
sb.Append(this.DataGrid1.ClientID);
sb.Append( ".scrollIntoView(true); ");
sb.Append( " < ");
sb.Append( "/ ");
sb.Append( "script> ");
if(!Page.IsStartupScriptRegistered( "scrollScript "))
Page.RegisterStartupScript( "scrollScript ",sb.ToString());
}

读书人网 >asp.net

热点推荐