网页(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.cs代码示例:
搜索事件处理的逻辑在各个页面处理。 问题是按钮在用户控件内,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.cs代码示例:
下一篇: Java中实现双数组Trie树实例