我有这个代码将变量发送到另一个页面上的数据网格
protected void Button1_Click(object sender, EventArgs e)
{
int agent = int.Parse(txtAgencyCode.Text);
Session["para1"] = agent;
Button1.Attributes.Add("onclick", "window.open('http://localhost:50771/WebSite4/Datagrid.aspx'); return false;");
}
protected void btnTitleSearch_Click(object sender, EventArgs e)
{
Session["para2"] = txtTitleSearch.Text;
btnTitleSearch.Attributes.Add("onclick", "window.open('http://localhost:50771/WebSite4/Datagrid.aspx'); return false;");
}
和另一个页面上的代码使用了第一个按钮的会话变量
protected void Page_Load(object sender, EventArgs e)
{
int field1 = (int)(Session["para"]);
localhost.Service ws = new localhost.Service();
GridView1.DataSource = ws.GetJobsByAgencyID(field1);
GridView1.DataBind();
}
我无法弄清楚如何制作一个if语句(或者即使它将是一个使用的if语句)来决定将哪个参数传递给我的datagrid。
有关信息,默认页面上将有另外3-4个控制器(其中只有一个将被激活),参数将采用不同的类型。
修改 很抱歉,你们都发现我的问题很难理解,我绝不是一个专业人士甚至是你们所谓的称职者。 James Hill和Ravi给了我很多我想要的东西(需要测试,但看起来像它)。谢谢大家的尝试:D
答案 0 :(得分:2)
你的问题有点难以理解。我想你要问的是如何确定会话变量是否存在。为此,只需使用:
if (Session["para"] != null) {
//para exists
}
else if (Session["para2"] != null) {
//para2 exists
}
...
答案 1 :(得分:2)
如果我理解正确,您需要根据会话中存储的值进行分支,
你可以这样尝试
if (Session["para1"] != null)
{
int AgentCode = Convert.ToInt32(Session["para1"].ToString());
//Search by AgentCode
GridView1.DataSource = ws.GetJobsByAgencyID(AgentCode );
GridView1.DataBind();
}
else if (Session["para2"] != null)
{
string title = Session["para1"].ToString();
//Search by title
GridView1.DataSource = ws.GetJobsByAgencyID(title );
GridView1.DataBind();
}
else
{
// your default parameters
}
答案 2 :(得分:0)
如果数据不敏感,而不是设置会话变量,我建议在windowopen中使用查询字符串并以这种方式传递参数。
Button1.Attributes.Add("onclick", "window.open('http://localhost:50771/WebSite4/Datagrid.aspx?dataPassed=1'); return false;");
在网格后面的代码中,做一个case语句:
int data= (int)(Request.Querystring["dataPassed"]);
switch(data)
{ case 1:
dosomething();
break;
case 2:
dosomethingelse();
break
default:
throw;
break:
}
答案 3 :(得分:0)
为什么不能有另一个名为context的会话变量?
string context = Session["context"];
switch(context)
{
case "titlesearch":
//do the things
break;
}
不检查语法,只检查这个想法。