我想创建一个封装以下控件的控件:
我已经重新创建了HTML(借助丑陋的表用法,直到我用div和CSS清理它),就像在控件.ascx文件中一样:
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="MultiLevelReportFilter.ascx.vb"
Inherits="controls.MultiLevelReportFilter" %>
<%@ Register TagPrefix="cc1" Namespace="UNLV.IAP.WebControls"
Assembly="DropDownCheckList" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org" />
<title></title>
<style type="text/css">
/*<![CDATA[*/
tr.c2 {display: none;}
td.c1 {font-weight: bolder; color: Red; font-size: 10pt;}
/*]]>*/
</style>
</head>
<body>
<table width="98%" cellspacing="0" cellpadding="15" align="center">
<tr>
<td width="40%" valign="top">
<table width="600" cellspacing="0" cellpadding="4">
<tr>
<td colspan="2" class="txtLabel c1" align="center">Sales as of</td>
</tr>
<tr>
<td align="right" class="txtLabel" width="200">Period </td>
<td class="txtLabel" width="400"></td>
</tr>
<tr class="c2">
<td align="right" class="txtLabel" width="200">Year </td>
<td class="txtLabel" width="400"> Month </td>
</tr>
<tr>
<td align="right" class="txtLabel" width="200">Accounts Filter </td>
<td></td>
</tr>
<tr>
<td align="right" class="txtLabel" width="200">Brands Filter </td>
<td></td>
</tr>
<tr id="Tr1" runat="server" visible="false">
<td align="right" valign="top" class="txtLabel" width="200">Business
Groups</td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right" valign="top" class="txtLabel" width="200">Measurement</td>
<td> <span class="txtLabel">Display</span> </td>
<td></td>
</tr>
</table>
</td>
<td width="60%" valign="top">
<table width="200">
<tr>
<td width="20"><img src="/images/ico_graph1.gif" runat="server" id=
"iGenerate" /></td>
<td width="180">Generate Report</td>
</tr>
<tr>
<td width="20"><img src="/images/ico_print.gif" runat="server" id=
"iPrint" /></td>
<td width="180">Print</td>
</tr>
<tr>
<td width="20"><img src="/images/ico_excel.jpg" runat="server" id=
"iExport" /></td>
<td width="180">Export To Excel</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
我的问题是双重的:
如何在其他网页上添加此内容?
我试图注册我的控件并引用它,但我错过了程序集信息。我似乎无法找到有关如何在程序集中注册控件的任何信息:
<%@ Register TagPrefix="cc1" Namespace="Controls.MultiLevelReportFilter"
Assembly="MultiLevelReportFilter" %>
Visual Studio在上面的行上报告错误,因为程序集不正确。
从其他网页调用此功能时是否可以隐藏某些控件?
答案 0 :(得分:1)
你的控件继承了controls.MultiLevelReportFilter(little c),而你的Register标签使用了Controls.MultiLevelReportFitler(big C),这可能是你问题的一部分。
或者,您可以使用以下语法:
<%@ Register TagPrefix="cc1" TagName="MultiLevelReportFitler" Src="/Controls/MultiLevelReportFitler.ascx" %>
请注意,假定用户控件存在于您使用它的同一个Web应用程序中。
就隐藏控制而言,你可以做任何你想做的事。只需根据您希望的任何条件将visible属性设置为false(例如,设置用户控件的属性,查看QueryString值或当前页面的URL等)。
答案 1 :(得分:1)
用户控件不是自定义服务器控件。
如果您在同一个项目中使用了ascx,只需进入设计模式并将其拖到您想要的页面上即可。
如果你想在同一个解决方案中分享多个项目,Scott Gu写了一篇文章解释如何reference and use your user controls。
如果没有,最好是create a server control。
答案 2 :(得分:1)
我通常只是将自定义控件添加到我的web.config:
<system.web>
<pages>
<controls>
<add tagPrefix="CC1" src="~/UserControls/ControlName.ascx" tagName="TagName" />
</controls>
</pages>
</system.web>
现在,您可以在页面中执行以下操作:
<CC1:TagName runat="server" ID="TagName1" />
在用户控件中,您可以创建隐藏任何控件的函数或属性。然后从父页面调用:
TagName1.Function();
或
TagName1.Property = value;