• 收集的用户控件的传值方法。。未经过测试的。呵呵。


    尽管.NET的控件已经很多,但是自定义用户控件给我们提供了更为广阔的开发空间。合理的使用用户控件能给我们的开发带来很多好处和便捷。

    但是用户控件和普通的页面又有一些差别,如果使得用户控件与页面以及用户控件之间的通信,可能成为大家使用用户控件一个必须要思考的问题。当然,用户控件的设计的初衷应该是功能相对独立的单元,某一个用户控件完成特定的某种职能,但是在实际的应用中,经常需要这种用户控件之间的通信。

          举个例子:我们把上传文件的功能设计为一个用户控件,用户控件定义一切关于上传的文件格式的判断、动作、显示等。在页面调用的时候,我们直接拖入某一个页面,定义其属性。在这里要求,上传上来的文件形成一个文件列表显示出来,这个就需要用户控件和页面之间实现通信。

      最简单的方法:用Session将上传文件的值保存下来,然后在页面直接调用Session,当然这样做并非不可,但是会给你更新、清空这个Session而头疼。

      当然你可以使用get方法进行页面传值,但是这样的局限性就更大了,一个控件是为了更多代码来使用的,这样有悖于用户控件设计的出发点。

      我们可以通过反射解决这个问题,具体的代码实例: 

    在页面调用用户控件,用户控件的功能完成后,需要更新主页面。
    Page nPage
    = this.Parent.Page;//首先获得用户控件所在的页面对象
    Type pType = nPage.GetType();//获得该对象的类型
    MethodInfo nMethod = pType.GetMethod("BindData");

    //调用该类型下的某种方法,这里只提供了方法名。具体的方法,必须是public的无返回值的。
    nMethod.Invoke(nPage, null);触发执行。这样也就让页面重新加载。
    //nMethod.Invoke(p, new object[] { "参数1","参数2" });如果有参数

     

         如果是控件之间传值,可以使用下列方法:

     

    Page nPage = this.Parent.Page;
    UserControl uc
    = nPage.FindControl("TempletList1") as UserControl;//只是需要转换为用户控件类型
    Type pageType = uc.GetType();
    MethodInfo nMethod
    = pageType.GetMethod("BindData");
    nMethod.Invoke(uc,
    null);
     
     
     
    ——————————————————————————————————————————
    问:
    用后置代码中如何引用用户控件?
    如在页面中有一个用户控件。
    <usercontrol:control id=control runat=server/>
    它有一个属性。showinfo.是字符串类型的。
    现在问题是怎么在后置的代码中给showinfo会值。
     
    答2:
    直接在你想的地方(一定要在声明了这个控件之后哦)
    control1.showinfo="这是你想要的字符串";
     
     
     
     
    ——————————————————————————————————————————
    在用户控件(UC.ascx)中设置属性,如:public string year
     {
     get { return Year.Text; }
     set { Year.Text = value; }
     }
    Year是用户控件中TextBox控件的ID;这样就可以直接在页面(test.aspx)中进行year属性的取值和赋值,如:
    string year = UC.year.ToString();
    UC.year = "2010";
    其中UC是用户控件在页面(test.aspx)中的ID值。
     
     
     
     
    ——————————————————————————————————————————
    namespace temp3

    using System; 
    using System.Data; 
    using System.Drawing; 
    using System.Web; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.HtmlControls;
     ///  ///  test 的摘要说明。 ///  
    public class test System.Web.UI.UserControl 
     
    protected System.Web.UI.WebControls.TextBox TextBox1;   
     private void Page_Load(object sender, System.EventArgs e)  
      // 在此处放置用户代码以初始化页面   
    public string Text  
      
    get  
       
     return TextBox1.Text;   
      
    set   
       
    TextBox1.Text value;   
     

    }
    }

    调用页面代码:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;
    namespace temp3{ ///  /// usercon 的摘要说明。 ///  
    public class usercon 
    System.Web.UI.Page 
     
    protected System.Web.UI.WebControls.Button Button1;  
    protected temp3.test UserControl1; //注意: 此处需要实例化下用户控件,否则会出现未实例化的错误  
    private void Page_Load(object sender, System.EventArgs e)  
      // 在此处放置用户代码以初始化页面  
     
    private void Button1_Click(object sender, System.EventArgs e)  
      
    Response.Write(UserControl1.Text);  

    }
    }

    原文地址:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147e9d895368d4e419ce3b46120720b8ea79750704a4963d2516ae3d07bce7370437022aa3de95c81cd2ace22238fc2d23716c913713c468aedc3655d653954de8df0e97cee74499b9a2a2c82024dd52756df0f69c297003cb1fe76235f4d69e&p=ce33dc16d9c611a05be685655957&user=baidu
  • 相关阅读:
    微软官方Silverlight5新特性完整介绍
    Windows Phone 7外包(承接WP7项目外包 可签合同 长期有效)
    我们为什么要选择Silverlight?(CSDN网友的见解分享大家)【转】
    开博记录02120928
    [转载]在linux下如何制作img的映像文件
    JavaScript中的null和undefined
    年度映像
    25岁毕业,拿一万块钱月薪
    saymedia bug问题
    mxp组件开发及jsfl文件
  • 原文地址:https://www.cnblogs.com/shlcn/p/2112801.html
Copyright © 2020-2023  润新知