如何在父页面获取用户控件中的某个变量值

原来的实现方法:

父页面aspx:

protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                InitPage();
                LoadData();
                //Response.Write("<h3>首次加载</h3>");
            }
            else
            {
                //Response.Write("<h3>数据回发</h3>");
            }
        }
        catch (Exception ex)
        {
            ProcessException(ex, true);
        }
    }

其中LoadData方法中实现了对用户控件的初始化并给ProjectCode赋值

this.AuctionRent1.InitControl();
LogHelper.Info("InitBidding1 projectcode:" + this.AuctionRent1.ProjectCode);
AuctionRent1是用户控件的id值。

用户控件ascx相关代码:

/// <summary>
    /// 项目编号
    /// </summary>
    public string ProjectCode
    {
        get;
        set;
    }

public void InitControl()
    {
        if (this.State == "edit")//可操作的
        {
            LoadData(true);
            EyeableDiv.Visible = false;
            OperableDiv.Visible = true;
        }
        else if (this.State == "view")//可见的
        {
            LoadData(false);
            OperableDiv.Visible = false;
            EyeableDiv.Visible = true;
        }
        else
        {
            this.Visible = false;
        }
       
         
        
    }

initcotrol方法中LoadData实现了对ProjectCode的赋值

 这种设计我在aspx页面的按钮事件中却获取不到ProjectCode的值

这里获取到的用户控件中的ProjectCode值为空。通过分析发现

this.AuctionRent1.InitControl();
LogHelper.Info("InitBidding1 projectcode:" + this.AuctionRent1.ProjectCode);

在这里是可以获取到用户控件中projectCode的值。但是在btnAddDtl_ServerClick按钮事件中却获取不到值。这是因为此时处于数据回发状态。数据回发时ProjectCode只有初始值null。并未赋值。若要改变此状况,使用viewstate对ProjectCode的get和set方法进行改造,可避免此问题。使其可以在按钮事件中能正确获取rojectCode值

private string _ProjectCode = string.Empty;

    /// <summary>
    /// 项目编号
    /// </summary>
    public string ProjectCode
    {
        get
        {
            if (_ProjectCode == string.Empty)
            {
                if (this.ViewState["_ProjectCode"] != null)
                    return this.ViewState["_ProjectCode"].ToString();
                return "";
            }
            return _ProjectCode;
        }
        set
        {
            _ProjectCode = value;
            this.ViewState["_ProjectCode"] = value;
        }
    }

这样设计就没此问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值