在母板捕获控件

          这几天做项目,用到server.transfer来将上页内容传到下页,出了点小问题,请教老师,上网查,看SDK,搞了好久,才搞掂,发现有学到不少东西,下面把我遇到的情况和解决办法细细讲来。 

          1server.transfer用法:server.transfer用来重定向网页,它与Response.Rediret有所不同。server.transfer重定向是在服务器端传递,浏览器的地址栏不会显示变化。源页面的Cs文件中可写属性,目的也中可以引用,另外,目的页还可以捕获源页面的控件。

具体用法:在源页面a.aspx,目标页b.aspx

a.aspx.cs中有如下代码:

 public string Cstatus
    {
        get
        {
            return DdlCstatus.SelectedValue.Trim();

        }
    }

b.aspx中注册a页面:

<%@ PreviousPageType VirtualPath ="a.aspx" %>

完成以上步骤,就可在b.aspx.cs中调用a.aspx.cs的属性,也可用findcontrol来获取a页控件

b.aspx.cs中代码:

LbPCid.Text = this.PreviousPage.Cid;

ListBox LbxPCdetaillist = this.PreviousPage.FindControl("LbxCdetaillist") as ListBox;

             2带有母版页面的控件捕获:我用上述方法成功获取了a中属性Cid,可是ListBox控件始终返回Null.Debug了好几遍,又找其他控件,同样找不到,最后查SDk发现,原来是我用的母版页Master在作怪。

              内容页的所有内容,控件,在编译时都存在母版页Master 的一个控件ContentPlaceHolder中,所以内容页中的Id放到母版页后会变化。也就是说,ContentPlaceHolder是母版页的一个容器,内容页的控件放在该容器中。

              FindControl方法只能捕获当前对象中的控件,不能递归捕获,所以我们应先在母版中捕获ContentPlaceHolder,再在ContentPlaceHolder中捕获相应控件,代码修改如下:

ContentPlaceHolder cph = this.PreviousPage.Master.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
            ListBox LbxPCdetaillist = cph.FindControl("LbxCdetaillist") as ListBox;

这样经过两次FindControl终于得到了ListBox控件。

          以上内容希望能对用Master和Server.Transfer的朋友有一些帮助。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值