博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在子MasterPage设置UserControl内的Web控件属性
阅读量:5935 次
发布时间:2019-06-19

本文共 2191 字,大约阅读时间需要 7 分钟。

 环境是这样的,一个MasterPage 如MP2(子)嵌套另一个MasterPage 如MP1(父)。一个UserControl 如MyUc,这个UserControl有一个Web控件,如TextBox1它初始状态为 Visible="false" ,它是拉在MP1的MasterPage上。 现在是要在MP2的MasterPage的page_Load控制UserControl内的TextBox显示与否。

这样的做法,就是所有使用MP1 MasterPage的网页对用户控件的TextBox是不可见,而使用MP2 MasterPage的网页对用户控件的TextBox是可见。

Insus.NET实现这个问题,也花上不少时间,虽然以前实现很多相似的,但都是有page内,而非是在MasterPage去操作。下面是实现过程:

写一个Interface(接口) ,设置用户控件内的TextBox是否显示,是让MyUc用户控件实作这个接口。

ExpandedBlockStart.gif
IVisible
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
///
 
<summary>
///
 Summary description for IVisible
///
 
</summary>
namespace Insus.NET
{
    
public 
interface IVisible
    {
        
void SetVisible(
bool show);
    }
}

 

MyUc用户控件实作上面接口:

ExpandedBlockStart.gif
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public 
partial 
class MyUc : System.Web.UI.UserControl,IVisible
{      
    
protected 
void Page_Load(
object sender, EventArgs e)
    {
        
    }
    
public 
void SetVisible(
bool show)
    {
        
this.TextBox1.Visible = show;
    }
}

 

接下来,再写一个接口,接口写了一个bool的属性,设法让实作这个接口的物件实作这个属性。:

ExpandedBlockStart.gif
ICtrlDisplay
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
///
 
<summary>
///
 Summary description for ICtrlDisplay
///
 
</summary>
namespace Insus.NET
{
    
public 
interface ICtrlDisplay
    {
        
bool ShowControl { 
set; }
    }
}

 

因为MyUc UserControl 拉入MP1 MasterPage内。因此上面的接口ICtrlDisplay为之准备。

ExpandedBlockStart.gif
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public 
partial 
class MP1 : System.Web.UI.MasterPage,ICtrlDisplay
{       
    
protected 
void Page_Load(
object sender, EventArgs e)
    {
     
    }
    
public 
bool ShowControl
    {
        
set 
        {
            ((IVisible)
this.MyUc1).SetVisible(value);           
        }
    }
}

 

准备好上面过程,现在我们就可以以MP2的MasterPage的Page_Load事件中,控制到MyUc内的TextBox显示与否。

ExpandedBlockStart.gif
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public 
partial 
class SubDirectory_MP2 : System.Web.UI.MasterPage
{
    
protected 
void Page_Load(
object sender, EventArgs e)
    {
        ((ICtrlDisplay)
this.Master).ShowControl = 
true; ;
    }
}

 

看看演示:

 

 

演示源程序:

 

 

转载地址:http://vfjtx.baihongyu.com/

你可能感兴趣的文章
Linux SHELL脚本
查看>>
跟着百度学习之ThinkPHP的认识/初窥
查看>>
【Code::Blocks】windows 环境下编译 Code::Blocks(已修正)
查看>>
web报表工具FineReport经常使用函数的使用方法总结(日期和时间函数)
查看>>
使用离线文档
查看>>
How to make an executable jar file?
查看>>
Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通
查看>>
(转)android UI进阶之style和theme的使用
查看>>
Windows界面编程第十三篇 位图显示特效合集
查看>>
Proteus仿真_01、 8086 IO译码仿真
查看>>
在centOS上安装VNC
查看>>
Leetcode: Paint House
查看>>
2016年第16周日
查看>>
IntelliJ IDEA创建web项目
查看>>
LeetCode Recover Binary Search Tree——二查搜索树中两个节点错误
查看>>
巧用Reponse.Filter实现多语言功能
查看>>
[zz]python 目录操作
查看>>
linux tomcat自启动设置
查看>>
App架构设计学习(一)---- 接口的设计
查看>>
angularjs中ng-class的使用
查看>>