利用委托把用户控件的值显示于网页案例应用

Asp.net开发要求,就是用户控件(UserControl)是集成一个功能,需要处理好的数据,然后存数据库中并显示于网页上,让用户能检测到处理的数据情况。

本演示中,Insus.NET只是作了一个简单的举例而已,并应用了委托来实现。为了让大家更能理解,可以先看看操作动画演示:

在你新建一站点上,创建一个PageB.aspx网页以及UcB.ascx用户控件,在UcB.ascx上拉一个TextBox和CheckBox以及Button控件:


代码如下:

UcB.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UcB.ascx.cs" Inherits="UcB" %>
<fieldset>
<legend>User control field</legend>
Catalog:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
Enabled:
<asp:CheckBox ID="CheckBox1" runat="server" /><br />
<asp:Button ID="Button1" runat="server" Text="Process..." OnClick="Button1_Click" />
</fieldset>

在UcB.ascx.cs代码页中,写一个委托属性,将用来存储所有用户控件中处理的数据。


代码如下:

View Code
private Delegate _InsusData;
public Delegate InsusData
{
set
{
_InsusData = value;
}
}

然后在Button的OnClick事件中,把数据存入刚才写好的属性:


代码如下:

View Code
protected void Button1_Click(object sender, EventArgs e)
{
object[] data = new object[2];
data[0] = this.TextBox1.Text.Trim ();
data[1] = this.CheckBox1.Checked;
_InsusData.DynamicInvoke(data);
}

完整的UcB.ascx.cs代码:


代码如下:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class UcB : System.Web.UI.UserControl
{
private Delegate _InsusData;
public Delegate InsusData
{
set
{
_InsusData = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
object[] data = new object[2];
data[0] = this.TextBox1.Text.Trim ();
data[1] = this.CheckBox1.Checked;
_InsusData.DynamicInvoke(data);
}
}

到这里,我需要把用户控件UcB拉到网页PageB中,并放置好相应的控件来显示数据:


代码如下:

PageB.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageB.aspx.cs" Inherits="PageB" %>
<%@ Register Src="UcB.ascx" TagName="UcB" TagPrefix="uc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:UcB ID="UcB1" runat="server" />
<br />
<fieldset>
<legend>Page Content
</legend>
Show User Control Data:<br />
Catalog:
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
<br />
Enabled:
<asp:CheckBox ID="CheckBox1" runat="server" Enabled="false" /><br />
</fieldset>
</form>
</body>
</html>

在PageB.aspx.cs代码内,宣告一个委托方法,并带两个参数:


代码如下:

private delegate void GetUserControlData(string catalog, bool isEnable);

再写一个与刚才写好委托方法(相同的参数)的方法,用参数为页面的控件显示数据:


代码如下:

void ShowDataToPage(string catalog, bool isEnable)
{
this.Label1.Text = catalog;
this.CheckBox1.Checked = isEnable;
}

最后是在PageB.aspx.cs内的Page_Load事件中,去实现获取用户控件的数据:


代码如下:

protected void Page_Load(object sender, EventArgs e)
{
GetUserControlData obj = new GetUserControlData(ShowDataToPage);
this.UcB1.InsusData = obj;
}

OK,完整的PageB.aspx.cs代码:


代码如下:

PageB.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class PageB : System.Web.UI.Page
{
private delegate void GetUserControlData(string catalog, bool isEnable);
protected void Page_Load(object sender, EventArgs e)
{
GetUserControlData obj = new GetUserControlData(ShowDataToPage);
this.UcB1.InsusData = obj;
}
void ShowDataToPage(string catalog, bool isEnable)
{
this.Label1.Text = catalog;
this.CheckBox1.Checked = isEnable;
}
}

(0)

相关推荐

  • asp.net动态加载用户控件,关于后台添加、修改的思考

    看下下面这个典型的后台(比较粗糙):说实在,我很厌倦全部用.aspx文件去做,比如"友情连接"这个模块,就有"添加友情连接""修改友情连接""友情连接列表",简单的话,可以把"添加""修改"合成一个文件.每次都去建立一个.aspx文件.我现在的想法是用"用户控件+配置文件"去实现,虽然文件数目可能不会少很多.但在编程到一定地步,我想大家会有跟我一样的想法. 首先需要涉

  • asp.net 用户控件读取以及赋值

    XML内容如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?> <SystemVersion> <Item> <Version_ID>1</Version_ID> <Version_Name>CN</Version_Name> </Item> <Item> <Version_ID>2</

  • asp.net 用户控件中图片及样式问题

    比如,头尾用户控件.这时候控件里的图片,及css 样式就会出现问题.不同位置的文件引用同一个位置的用户控件,这时候用户控件的图片及css样式路径发生错乱. 1.如果用户控件中有服务器控件需要引用图片地址,比如ImageButton,这时候你只要按照用户控件的位置写好引用图片的链接地址就行,也就是服务器控件可以智能解析出它的确切位置 2.如果是插入图片,按照用户控件所在文件夹位置写出图片链接地址,是不行的.比如:图片文件是:/images/dian.gif . /index.aspx 和/memb

  • ASP.NET用户控件技术

    我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一些局限性.在本文中,我们将会一同探讨另外一种新的ASP.NET技术:用户控件.    什么是用户控件(User Controls)?  为了能更好的理解用户控件的重要性,我们先来看看一段小小的"历史".在以前的ASP当中,可重用的技术实现选择是相当受限制的.许多的开发者一般都是借助将公共的常用的子过程放到那些包含文件当中的做法来实现一定的所谓代码重用的.比如,如我们

  • asp.net页面master页面与ascx用户控件传值的问题

    aspx 页面与ascx用户控件传值的问题 1.建立ascx控件 2.给ascx加上属性 3.将控件拖入aspx中 4.在aspx的代码中按控件ID访问属性 如: <uc3:left_Repassword ID="left_Repassword1" runat="server" /> left_Repassword1.HighLight = value; 也同样适用于master页面访问ascx ASP.Net访问母版页(MasterPage)控件.属性

  • asp.net 动态添加多个用户控件

    用户控件代码: 代码WebControls 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace xuyuanwang.myControl { public partial class Lablexuyuan : System.Web

  • 利用委托把用户控件的值显示于网页案例应用

    Asp.net开发要求,就是用户控件(UserControl)是集成一个功能,需要处理好的数据,然后存数据库中并显示于网页上,让用户能检测到处理的数据情况. 本演示中,Insus.NET只是作了一个简单的举例而已,并应用了委托来实现.为了让大家更能理解,可以先看看操作动画演示:在你新建一站点上,创建一个PageB.aspx网页以及UcB.ascx用户控件,在UcB.ascx上拉一个TextBox和CheckBox以及Button控件: 复制代码 代码如下: UcB.ascx <%@ Contro

  • ASP.NET用户控件如何使用

    用户控件用来做什么? 用户控件常常用来统一网页显示风格. 关于用户控件 1.用户控件的扩展名为.ascx. 2.用户控件中没有@Page指令,而是包含@Control指令. 3.用户控件不能做为独立文件运行,必须创建ASP.net页面,后添加. 4.在用户控件上可以使用相同的XHTML元素和Web服务器控件.例如,Button可以放到用户控件中,并创建按钮的事件处理. 创建用户控件 在vs中新建项中选择用户控件.(也可以将单个文件转化为用户控件.) 制作用户控件. 例如: 用户控件代码: Web

  • Treeview动态添加用户控件传值和取值的实例代码

    主要功能:勾选子节点的checkbox,右边会动态加载该节点的信息,出现TextBox让用户填写节点的值,点击保存按钮将文本框的值保存到对应的节点.里面涉及到了asp执行ascx页面里的事件,并取值.这是前台的代码:CustomXMLmanager.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomXMLmanager.aspx.cs&quo

  • 网页(aspx)与用户控件(ascx)交互逻辑处理实现

    几个页面(ASPX)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,把这相同的部分抽取放在一个用户控件(ASCX)上.现需要处理逻辑如下 搜索事件处理的逻辑在各个页面处理. 问题是按钮在用户控件内,Click事件怎样写在各个页面上? 每个页面的搜索结果不同的格式,因此把结果显示于各自的页面上. 用户控件的导出默认是Enabled="false" ,当有搜索结果时,它才会变为true. 它怎样知道各个页面是否已经有了结果? 用户控件的文本框的值,作为搜索条件,也

  • 用户控件(ASCX)向网页(ASPX)传值使用反射实现

    用户控件向网页传递值,方法非常之多,此博文尝试使用反射来实现.在站点中,建一个网页以及一个用户控件. 网页切换至设计模式,拉用户控件至网页上. Default.aspx: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register

  • web用户控件调用.aspx页面里的方法

    现在把此web用户控件添加到一.aspx页面中.要实现单击用户控件中的button控件把搜索出来的结果数据绑定到.aspx页面的gridview控件上去,如何实现呢? 如果gridview控件是放在.ascx文件中的话,那我们直接把搜索出来的数据绑定到它上面就行了.但现在gridview是放在.aspx文件里,也就是说web用户控件要如何才能访问母页面的控件,把数据绑定到母页面的控件上去? 解决方法: 1.先在.aspx页面的后台文件.aspx.cs中添加一个绑定数据的方法,代码如下: 复制代码

随机推荐