页面传值 && gridview绑定技巧

来源:互联网 发布:高博软件职业技术学院 编辑:程序博客网 时间:2024/06/06 14:27

关于页面传值的方法,引发了很多讨论。本文总结了asp.net跨页面传值的技巧。

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. }

    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. }

    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. }

    ASP.NET跨页面传值:使用Session变量

    想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。

    a.aspx的C#代码

    1. private void Button1_Click(object sender, System.EventArgs e)
    2. {
    3. Session["name"] = Label.Text;
    4. }

    b.aspx中C#代码

    1. private void Page_Load(object sender, EventArgs e)
    2. {
    3. string name;
    4. name = Session["name"].ToString();
    5. }

    ASP.NET跨页面传值:使用Cookie对象变量

    这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合asp.net内置对象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. }

    b.aspx中C#代码

    1. private void Page_Load(object sender, EventArgs e)
    2. {
    3. string name;
    4. name = Request.Cookie["name"].Value.ToString();
    5. }

    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.net跨页面传值的技巧。

    gridview绑定技巧
    想必大家在初接触gridview的绑定的时候,肯定会经常用到RowDataBound这个事件吧,这个事件是在gridview的行数据被填充的时候被触发,在这个事件中可以对刚刚被填充的行中的控件进行更多的处理.

    绑定的时候,我们肯定是引用<%@ Import namespace=""System.Data"" %>后使用<%# ((DataRowView)Container.DataItem)[""xxxx""]%> 绑定的方法

    先不考虑性能具体如何,但一些常见的应用,其实完全可以在数据绑定的时候就实现到我们所想要的效果

    1,特殊值的绑定

    很多时候,我们不能直接把从数据库中的查询出来的值绑定显示在页面上,比如金额达到3000元以上的订单,会显示为""大单"",3000元以下单据显示为""小单"".这个时候,我们可以通过在数据库查询的时候,在SQL语句中进行判断,但也同样可以在绑定过程中进行判断.

    <%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000?""大单"":""小单"" %>

    这样,就直接在数据进行绑定的时候,直接讲显示改为""大单"",""小单""的显示方式了

    2,控制控件的显示或隐藏

    控制控件的显示或隐藏,也是在绑定的时候经常遇见的一种情况.同样也可以在绑定的时候实现,列入,在金额大于3000的时候,显示按钮,否则隐藏按钮
     
    <asp:Button ID=""Button2"" Visible='<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000 %>' runat=""server"" Text=""Button"" />

    3,控制字体颜色

    更具条件的不同,让字体显示出不同的颜色,这也是在绑定的时候可以实现的功能,列入:在金额大于3000的时候,""查看单据""变为红色,否则为黑色

    <div style=""color:<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000?""#ff0000"":""#000000"" %>;"">
            查看单据
        </div>

    4,绑定JS

    很多时候我们可以用JS来实现出很多特效,但是在gridview的绑定中,即使用模板列,也不能直接指定出不同的ID,但还是一样可以用数据绑定的时候做到.我们在填充数据的时候,将数据的唯一值ID查询出来,然后也填充进控件之中.那么,ID的不同就变得简单了

    <div id=""div_<%# ((DataRowView)Container.DataItem)[""ID""]%>""></div>

    这样,每行的div都会有个一个不同的id,你就能在JS中找到指定的JS了,同样的方法也能绑定JS的方法调用.

    介绍了这么4种实际中的应用,但归根到最后,都是使用了 <% %> 来调用了服务器端代码 运用 <%# %> 将值绑定到我们所想要控制的地方去.虽然在性能上我没有做过测试,但至少在编码的方便程度上,我个人觉得还是可取的.