public class WebForm1 : System.Web.UI.Page
{  
    protected static int ftag=0;//定义并赋值一静态变量,点击Button5时,,ftag=1
    protected static int btag;
    protected static string xname;//
    private void Page_Load(object sender, System.EventArgs e)
   {   
      // 在此处放置用户代码以初始化页面
      if(!IsPostBack)
        {
  if(ftag==1)//判断是否是第一次执行,若是不执行,若不是执行。
              { btag=0;//判断是否对文本框的条件,作查询结果进行分页,
     perinfo();
               }

         }
     }
private void Button5_Click(object sender, System.EventArgs e)
{  
xname=TextBox40.Text.Trim();//xname查询值由文本框赋值
perinfo();
ftag=1;//点击按钮后,,ftag标志为1,,表示处于当前查询条件
}
public void perinfo()
{
         DataList1.Visible=true;
SqlCommand namecx=new SqlCommand("pr_namecx",con);
namecx.CommandType=CommandType.StoredProcedure;
SqlParameter pname;
pname=namecx.Parameters.Add("@name",SqlDbType.VarChar,20);
                            pname.Value=xname;
                            con.Open();
namecx.ExecuteNonQuery();
SqlDataAdapter dap=new SqlDataAdapter(namecx);
DataSet dsname=new DataSet();
dap.Fill(dsname,"perinfo");
DataTable tbname=dsname.Tables["perinfo"];
DataView  dwname=tbname.DefaultView;
//分页开始
         PagedDataSource objPage=new PagedDataSource();
objPage.DataSource=dwname;
objPage.AllowPaging=true;
objPage.PageSize=2;
int CurPage=0;
if(ftag==1)//表示单击了按钮,,开始新的条件查询
{
CurPage=1; 重新赋值为第一页
}
    else
{
  if(btag==0&&Request.QueryString["Page"]!=null)//表示还处于当前查询结果中,,可以执行“上一页”或“下一页“
  CurPage=Convert.ToInt32(Request.QueryString ["Page"]);
}
objPage.CurrentPageIndex=CurPage-1;
if(!objPage.IsFirstPage)
{
HyperLink1.NavigateUrl=Request.CurrentExecutionFilePath+"Page="+Convert.ToString(CurPage-1);
}
if(!objPage.IsLastPage)
{
HyperLink2.NavigateUrl=Request.CurrentExecutionFilePath+"?P   age="+Convert.ToString(CurPage+1);
}
DataList1.DataSource=objPage;
//分页结束
//DataList1.DataSource=dwname;
DataList1.DataBind();
con.Close();
}
}
现在目前问题是:开始ftag=0后,,可以正常执行,,,当关闭webform窗口后,,再次打开窗口,,,ftag的值=1,,,,不知什么原因,,,有无办法?初始化时ftag=0,,结束程序,,重新打开窗口时,,ftag=1,,关键最难实现的问题是单击 控件类型为HyperLink的 "上一页“或“下一页”时,,都要重新加载,,page_load() 中if (!IsPostBack){}语句,,、解决不了根据条件动态查询结果进行分页。

解决方案 »

  1.   

    简单看了一下,你这里应该不使用静态变量。简单的实现可以吧这个ftag用Session来保存。
      

  2.   

    写错了:现在目前问题是:开始ftag=0后,,可以正常执行,,,当关闭webform窗口后,,再次打开窗口,,,ftag的值=1,,,,不知什么原因,,,有无办法?初始化时ftag=0,,结束程序,,重新打开窗口时,,在条件判断时,,ftag=0,,关键最难实现的问题是单击 控件类型为HyperLink的 "上一页“或“下一页”时,,都要重新加载,,page_load() 中if (!IsPostBack){}语句,,、解决不了根据条件动态查询结果进行分页。
      

  3.   

    skytear,你好,能说详细点,,有什么方法,在datalist中结合PagedDataSource分页时,能实现动态查询结果分页,,我感觉很麻烦,,因为一点击,控件类型HyperLink,重新加载,,page_load() 中if (!IsPostBack){}语句,,很难实现根据动态查询条件生成结果集后,,再分页.不知大家都什么好方法,,除用存储过程方法来实现外谢谢!!
      

  4.   

    现在目前问题是:开始ftag=0后,,可以正常执行,,,当关闭webform窗口后,,再次打开窗口,,,ftag的值=1,,,,不知什么原因,,,有无办法?
    ----------------------------------------------------------------------
    因为这里你是使用的一个静态的变量ftag,在你赋值后会一直保留。静态成员在别人访问的时候也是你对其赋值过的,会相互干扰,所以这里不能使用静态变量。你点击Button以后把其值赋值为1,你关闭浏览器再次访问的时候这个值仍然存在。这个就是原因,如果我说得不清楚,查msdn的static。办法就是不要使用静态变量来坐判断是否是点击过Button,简单的方法可以使用Session。如:
    第一次载入的时候Session["ftag"]="0";
    点击Button以后Session["ftag"]="1";
    在取值的时候:
    int ftag = int.Parse(Session["ftag"].ToString());
    ------------------------------------------------------
    初始化时ftag=0,,结束程序,,重新打开窗口时,,在条件判断时,,ftag=0,,
    --------------------------
    你这里初始化为0,没有赋值,关闭再进来,当然读到的还是0。
    关键最难实现的问题是单击 控件类型为HyperLink的 "上一页“或“下一页”时,,都要重新加载,,page_load() 中if (!IsPostBack){}语句,,、解决不了根据条件动态查询结果进行分页。如果你要自己来坐这个分页,建议你把这个页数放到查询字符串里面。可以解决你的问题,查询字符串也查MSDN,这个使用还是比较简单的。试试吧,肯定行,不行再通知一下。