string sql="";
int curPage;//当前页索引
//查询按钮
private void button6_Click(object sender, EventArgs e)
{
string name=txtname.Text.Trim();
sql="select * from table where name like '%"+name+"'%";
//部分代码忽略.......
} //下一页按钮
private void button7_Click(object sender, EventArgs e)
{
curPage++;
DateSet ds=Access.DBhelper(sql,curPage);//当用户点查询后sql依然没有值
//部分代码忽略....
}
当用户点击查询后,sql就被赋值了,但是当用户查询后,再点击“下一页”的时候,sql又变“”了,我知道string sql="";代码又执行了一遍,之前赋值给sql的值就没了,
所以我想实现的是,当用户点击查询按钮后,保存住那个sql语句,然后给其他按钮使用其实上面的代码不重要,只是想提出我的问题而已,一个全局变量,在被修改后,后面使用该变量的时候能得到它改变后的值
最简单的就是Singleton模式了。
静态变量如果赋值的话那个值就没改变了。除非在赋值
如果没加static的话
string a="";
protected void Button1_Click(object sender, EventArgs e)
{
a = TextBox1.Text;
Response.Write("<script>alert('" + a + "')</script>");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('" + a + "')</script>");
}
这样点击button1的时候是textbo1的值,然后button2是空
可是如果加了static的话
当点击button1的时候把值赋给a,由于a是静态变量,所以保存着,当点击button2的时候还是输入textbox的值
class Class1
{
public static string sql;
}
在需要的地方赋值
Class1.sql ="select * from table where name like '%"+name+"'%";
如果是 winform 程序,从你贴出来的代码来看,执行“下一页”按钮事件时,不会把string sql="";执行了一次的。应该是其他地方的问题,这段代码没问题。
public static string sql="";
除非你关闭程序,不然一直存在!!~
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string sql = ""; //查询按钮
private void button1_Click(object sender, EventArgs e)
{ string name = "Boven";
sql = "select * from table where name like '%" + name + "'%";
} //下一页按钮
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = sql;
}
}
}试验了,string sql = "";和static string sql = "";都没问题
跨页面的方法共用变量时可用用session,数据是存储在服务器的内存中,虽然会过期,但是不会像viewstate一样,限制在同一个页面才能使用!