关于页面传值的方法,引发了很多讨论。本文总结了asp跨页面传值的技巧。
AD:
ASP.NET跨页面传值:使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
a.aspx的C#代码
1. private void Button1_Click(object sender, System.EventArgs e)
2. {
3. string s_url;
4. s_url = "b.aspx?name=" + Label1.Text;
5. Response.Redirect(s_url);
6. }
7.
b.aspx中C#代码
1. private void Page_Load(object sender, EventArgs e)
2. {
3. Label2.Text = Request.QueryString["name"];
4. }
ASP.NET跨页面传值:使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。
a.aspx的C#代码
1. private void Button1_Click(object sender, System.EventArgs e)
2. {
3. Application["name"] = Label1.Text;
4. Server.Transfer("b.aspx");
5. }
6.
b.aspx中C#代码
1. private void Page_Load(object sender, EventArgs e)
2. {
3. string name;
4. Application.Lock();
5. name = Application["name"].ToString();
6. Application.UnLock();
7. }
8.
ASP.NET跨页面传值:使用Session变量
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
a.aspx的C#代码
1. private void Button1_Click(object sender, System.EventArgs e)
2. {
3. Session["name"] = Label.Text;
4. }
5.
b.aspx中C#代码
1. private void Page_Load(object sender, EventArgs e)
2. {
3. string name;
4. name = Session["name"].ToString();
5. }
6.
ASP.NET跨页面传值:使用Cookie对象变量
这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合asp内置对象Request来使用。
a.aspx的C#代码
1. private void Button1_Click(object sender, System.EventArgs e)
2. {
3. HttpCookie cookie_name = new HttpCookie("name");
4. cookie_name.Value = Label1.Text;
5. Reponse.AppendCookie(cookie_name);
6. Server.Transfer("b.aspx");
7. }
8.
b.aspx中C#代码
1. private void Page_Load(object sender, EventArgs e)
2. {
3. string name;
4. name = Request.Cookie["name"].Value.ToString();
5. }
6.
ASP.NET跨页面传值:使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对
象的,简洁有效。
a.aspx的C#代码
1. public string Name
2. {
3. get{ return Label1.Text;}
4. }
5. private void Button1_Click(object sender, System.EventArgs e)
6. {
7. Server.Transfer("b.aspx");
8. }
b.aspx中C#代码
1. private void Page_Load(object sender, EventArgs e)
2. {
3. a newWeb; //实例a窗体
4. newWeb = (source)Context.Handler;
5. string name;
6. name = newWeb.Name;
7. }
以上就是本人在实践过程中总结的asp跨页面传值的技巧。
gridview绑定技巧
想必大家在初接触gridview的绑定的时候,肯定会经常用到RowDataBound这个事件吧,这个事件是在gridview的行数据被填充的时候被触发,在这个事件中可以对刚刚被填充的行中的
控件进行更多的处理.
绑定的时候,我们肯定是引用<%@ Import namespace=""System.Data"" %>后使用<%# ((DataRowView)Container.DataItem)[""xxxx""]%> 绑定的方法
先不考虑性能具体如何,但一些常见的应用,其实完全可以在数据绑定的时候就实现到我们所想要的效果
1,特殊值的绑定
很多时候,我们不能直接把从数据库中的查询出来的值绑定显示在页面上,比如金额达到3000元以上的订单,会显示为""大单"",3000元以下单 据显示为""小gridview不显示单"".这个时候,我们可以通过在数据库查询的时候,在SQL语句中进行判断,但也同样可以在绑定过程中进行判断.
<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000?""大单"":""小单"" %>
<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000?""大单"":""小单"" %>
这样,就直接在数据进行绑定的时候,直接讲显示改为""大单"",""小单""的显示方式了
2,控制控件的显示或隐藏
2,控制控件的显示或隐藏
控制控件的显示或隐藏,也是在绑定的时候经常遇见的一种情况.同样也可以在绑定的时候实现,列入,在金额大于3000的时候,显示按钮,否则隐藏按钮
<asp:Button ID=""Button2"" Visible='<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000 %>' runat=""server"" Text=""Button"" />
3,控制字体颜
<asp:Button ID=""Button2"" Visible='<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000 %>' runat=""server"" Text=""Button"" />
3,控制字体颜
更具条件的不同,让字体显示出不同的颜,这也是在绑定的时候可以实现的功能,列入:在金额大于3000的时候,""查看单据""变为红,否则为黑
<div color:<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString
<div color:<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString
())>3000?""#ff0000"":""#000000"" %>;"">
查看单据
</div>
4,绑定JS
查看单据
</div>
4,绑定JS
很多时候我们可以用JS来实现出很多特效,但是在gridview的绑定中,即使用模板列,也不能直接指定出不同的ID,但还是一样可以用数据绑定的时候做到.我们在填充数据的时候,将数据的唯一值ID查询出来,然后也填充进控件之中.那么,ID的不同就变得简单了
<div id=""div_<%# ((DataRowView)Container.DataItem)[""ID""]%>""></div>
这样,每行的div都会有个一个不同的id,你就能在JS中到指定的JS了,同样的方法也能绑定JS的方法调用.
<div id=""div_<%# ((DataRowView)Container.DataItem)[""ID""]%>""></div>
这样,每行的div都会有个一个不同的id,你就能在JS中到指定的JS了,同样的方法也能绑定JS的方法调用.
介绍了这么4种实际中的应用,但归根到最后,都是使用了 <% %> 来调用了服务器端代码 运
用 <%# %> 将值绑定到我们所想要控制的地方去.虽然在性能上我没有做过测试,但至少在编码的方便程度上,我个人觉得还是可取的.
一:页面间通过JS传值的形式大概有三种
1 window.opener传值,子页面能获取父页面的窗口对象。当然就能获取到对象的值了,这种方式不存在传值 的长度限制,不能跨域。
子页面给 父页面赋值:
1.window.parent.ElementById("ContentPlaceHolder2_HiddenField1").value = lls[2].innerText + ';' + lls[3].innerText + ';' + lls[4].innerText + ';' + lls[5].innerText + ';' + lls[6].innerText; //给一个控件传递多个值
2.window.parent.ElementById("ContentPlaceHolder2_lblPatternBind").innerText = lls[2].innerText; //给label控件赋值
3.window.parent.ElementById("ContentPlaceHolder2_FormView1_gdv_DropDownList1").options[window.parent.ElementById("ContentPlaceHolder2_FormView1_gdv_DropDownList1").selectedIndex].innerText = lls[3].innerText; //给dropdownlist控件赋值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论