我做了一个用户控件 声明了一些属性 如:
public  int t_x
{
get
{
return xx;
}
set
{
xx=value;
}
}
然后再button_click里调用 如:
int sql=t_x;
在其它页面的page_load内对 t_x赋值10
但是在使用时为什么sql=null??? 
跟踪了下程序运行发现刚开始时t_x 是有值的 可是在button_click时t_x就=0了 大家帮帮我急用~~

解决方案 »

  1.   

    你应该这样private int _test = 0;
    public  int t_x
    {
    get
    {
    return _test ;
    }
    set
    {
    _test =value;
    }
    }
    然后再button_click里调用 如:
    int sql=_test ;
      

  2.   

    if(!Page.IsPostBack)
    {
       为t_x赋值10赋值
    }
      

  3.   

    因为你button_click时重新刷新页面 你必须在用户控件内部 load时 给
    int sql=t_x;
      

  4.   

    调用用户控件时Pageload比方法要迟,所以pageload的赋值是在你调用完t_x之后的。
      

  5.   

    kenMoxi(蓝雨) 
            我做的和你一样 我私有变量是xx
    cyp503(谁怕?一蓑烟雨任平生)
            我是这么做的啊~
    补充一下 我是在调用控见的页面page_load里 为t_x赋值10  这时控件页t_x=10 没错
    可是跟踪到控件的button_click里看 t_x=0
    为什么会被清空了呢??
      

  6.   

    你用viewstate保存一下这个变量
      

  7.   

    page_load 内赋的值,怎么可能在button_click里还有效...汗...你要在page_load时把值保存在ViewState 先,然后再从button_click时从ViewState 里取值.引用:"为什么会被清空了呢??"为什么?这还用为什么?汗...
    你页面装载完一次,,,对应在服务器上的对象的状况值,当然是会被清空啊.
    不然,要是有一万个人同是打开了服务器上的10来张页面,那服务器,企不是要保存10万来张页面的数据了.
      

  8.   

    呵呵 感觉到可能要保存 但是c#还不熟练 看来要多看看书了
    ViewState怎么用?
      

  9.   

    public string t_sqlconn
    {
    get
    {
    return (string) ViewState["sqlconn"];
    }
    set
    {

    ViewState["sqlconn"] = value;
    }
    }
    int sql=t_sqlconn;
    还是空值~~郁闷了
      

  10.   

    在其它页面的page_load内对 t_x赋值10
    跨页面访问变量时放到session
      

  11.   

    private int setissearch
    {
    get
    {
    return ((int) this.ViewState["sqlconn"]);
    }
    set
    {
    this.ViewState.Add("sqlconn", value);
    }
    }
    int sql=setissearch;
      

  12.   

    gjinlin(阿林)  用session 说 未将对象引用到对象的实例 thooy(雨天)  这样还是老问题  用的时候setissearch=0
    我控件一个页面 引用页一个页面 在引用页里
    page_load  时setissearch=10在控件页里
    button_click 时int sql=setissearch;  可是setissearch 还是0 我用了ViewState了啊 可是一button_click 就清空了 郁闷。不在同一个页面可以用ViewState么?
      

  13.   

    你这个属性要如下写
    public  int t_x
    {
    get
    {
    return Convert.ToInt32(this.ViewState["t_x"]);
    }
    set
    {
    this.ViewState["t_x"] =value;
    }
    }
      

  14.   

    你是不在同一个页面啊??那不能用ViewState了,用session吧,
    在引用页里
    page_load  时Session["sqlconn"] = 2
    在控件页里
    button_click
    if(Session["sqlconn"] != null)
    {
      int sql = (int)Session["sqlconn"];
    }
      

  15.   

    那你放一个visible为空的textbox来储存这个数据,postback 时调用这个textbox 里的text就会OK了,试试吧。
      

  16.   

    Page_Load的时候
    你需要如下对用户控件的属性来赋值
    yourControl yc = (yourControl)this.Page.FindControl("yourControlID");yc.t_x = 1;.....
      

  17.   

    会用session不??ViewState和Session一样的..
      

  18.   

    问题已经解决  谢谢大家 耐心指导最后采用的是 tomtown530(梦想一定会实现!) 和( brightheroes(闭关|那一剑的风情) 的方法 在页面上作了几个label接受值 用session我认为有些占用资源 ~