关于两个自定义控件的取值问题及接口的应用
关于两个自定义控件的取值问题及接口的应用
发布时间:2017-01-07 来源:查字典编辑
摘要:“一个.aspx的页面中,用到了两个用户控件,其中想做的到A控件有一个按钮,点击的时候获取到B控件中的一个textbox的值。因为在生成的时...

“一个.aspx的页面中,用到了两个用户控件,其中想做的到A控件有一个按钮,点击的时候获取到B控件中的一个textbox的值。

因为在生成的时候名字会改变,用findcontrol的时候名字该如何写呢?

另外像这种问题有几种解决的办法呢?”

论坛上看到这个问题,Insus.NET提供自己的解决方法,先看看解决运行的效果:

1

首先创建一个站点,然后创建两个用户控件,一个是UcA,一个是UcB。 在UcB的控件上拉一个TextBox。

复制代码 代码如下:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UcB.ascx.cs" Inherits="UcB" %>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

创建一个接口IGetValue:

复制代码 代码如下:

IGetValue.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

/// <summary>

/// Summary description for IGetValue

/// </summary>

namespace Insus.NET

{

public interface IGetValue

{

string GetValue();

}

}

接下来,用户控件UcB实现这个接口,接口返回TextBox的Text值。

复制代码 代码如下:

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 UcB : System.Web.UI.UserControl,IGetValue

{

protected void Page_Load(object sender, EventArgs e)

{

}

public string GetValue()

{

return this.TextBox1.Text.Trim();

}

}

创建一个aspx页面,如Default.aspx,切换至设计模式,把两个用户控件UcA,UcB拉至Default.aspx:

复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Src="UcA.ascx" TagName="UcA" TagPrefix="uc1" %>

<%@ Register Src="UcB.ascx" TagName="UcB" TagPrefix="uc2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form id="form1" runat="server">

<fieldset>

<legend>UcA

</legend>

<uc1:UcA ID="UcA1" runat="server" />

</fieldset>

<fieldset>

<legend>UcB

</legend>

<uc2:UcB ID="UcB1" runat="server" />

</fieldset>

</form>

</body>

</html>

到这里,再创建一个接口Interface,目的是为了获取UcB这个用户控件。

复制代码 代码如下:

IGetUserControl.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

/// <summary>

/// Summary description for IGetUserControl

/// </summary>

namespace Insus.NET

{

public interface IGetUserControl

{

UserControl GetUc();

}

}

接口创建好之后,在Default.aspx.cs实现这个IGetUserControl接口。

复制代码 代码如下:

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 _Default : System.Web.UI.Page,IGetUserControl

{

protected void Page_Load(object sender, EventArgs e)

{

}

public UserControl GetUc()

{

return this.UcB1;

}

}

到最后,我们在UcA这个用户控件的按钮Click事件写:

复制代码 代码如下:

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 UcA : System.Web.UI.UserControl

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

IGetUserControl ucb = (IGetUserControl)this.Page;

IGetValue value = (IGetValue)ucb.GetUc();

Response.Write("<scr" + "ipt>alert('" + value.GetValue() + "')</scr" + "ipt>");

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类