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){}语句,,、解决不了根据条件动态查询结果进行分页。
{
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){}语句,,、解决不了根据条件动态查询结果进行分页。
----------------------------------------------------------------------
因为这里你是使用的一个静态的变量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,这个使用还是比较简单的。试试吧,肯定行,不行再通知一下。