欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-02 19:48:34
几个页面(aspx)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,把这相同的部分抽取放在一个用户控件(ascx)上。现需要处理逻辑如下 搜索事件...
几个页面(aspx)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,把这相同的部分抽取放在一个用户控件(ascx)上。现需要处理逻辑如下

搜索事件处理的逻辑在各个页面处理。 问题是按钮在用户控件内,click事件怎样写在各个页面上?
每个页面的搜索结果不同的格式,因此把结果显示于各自的页面上。

用户控件的导出默认是enabled="false" ,当有搜索结果时,它才会变为true。 它怎样知道各个页面是否已经有了结果?

用户控件的文本框的值,作为搜索条件,也就是每个页面的执行方法的参数。 aspx怎样获取用户控件ascx内的文本框的值?

下面是ascx:
复制代码 代码如下:

<%@ control language="c#" autoeventwireup="true" codefile="searchform.ascx.cs" inherits="system_assets_report_searchform" %>
<div style="margin: 3px;">
资产编号 <asp:textbox id="textboxassetsnumber" runat="server" cssclass="textbox" height="20px" ></asp:textbox>
<asp:button id="buttonsearch" runat="server" text="search" onclick="buttonsearch_click" />
 <asp:button id="buttonexport" runat="server" text="导出至excel" onclick="buttonexport_click" enabled="false" />
</div>

为了解决搜索的click事件在各个页面执行,insus.net在用户控件使用委托(delegate):
复制代码 代码如下:

public delegate void searcheventhandler(object sender, eventargs e);
public delegate void exporteventhandler(object sender, eventargs e);

另外为了搜索结果是否有记录,对应导出铵钮是否禁用与启用,因此在用户控件写一个带参的方法:
复制代码 代码如下:

public void enabledexportbutton(bool enabled)
{
this.buttonexport.enabled = enabled;
}

还有就是为了把用户控件的文本框的值带结aspx.cs页面,还需要写一个修饰符为public的方法:
复制代码 代码如下:

public string getassetsnumber()
{
return this.textboxassetsnumber.text.trim();
}

完整的ascx.cs代码:
复制代码 代码如下:

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 system_assets_report_searchform : baseusercontrol
{
public delegate void searcheventhandler(object sender, eventargs e);
public delegate void exporteventhandler(object sender, eventargs e);
public event searcheventhandler searchclick;
public event exporteventhandler exportclick;
public string getassetsnumber()
{
return this.textboxassetsnumber.text.trim();
}
public void enabledexportbutton(bool enabled)
{
this.buttonexport.enabled = enabled;
}
protected void page_load(object sender, eventargs e)
{
}
protected void buttonsearch_click(object sender, eventargs e)
{
if (searchclick != null)
searchclick(this, e);
}
protected void buttonexport_click(object sender, eventargs e)
{
if (exportclick != null)
exportclick(this, e);
}
}

各个aspx页,下面只列示一页:
网页(aspx)与用户控件(ascx)交互逻辑处理实现 
.aspx.cs代码示例:
网页(aspx)与用户控件(ascx)交互逻辑处理实现