首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2011-12-22 
20分的一道难题..多条件AspNetPager的我用AspNetPager存储过程可以很轻松的分页.但是如果涉及到多条件查询

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());
}

热点排行