0

我想创建一个封装以下控件的控件:

控件

我已经重新创建了 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&nbsp;</td>

            <td class="txtLabel" width="400"></td>
          </tr>

          <tr class="c2">
            <td align="right" class="txtLabel" width="200">Year&nbsp;</td>

            <td class="txtLabel" width="400">&nbsp; Month&nbsp;</td>
          </tr>

          <tr>
            <td align="right" class="txtLabel" width="200">Accounts Filter&nbsp;</td>

            <td></td>
          </tr>

          <tr>
            <td align="right" class="txtLabel" width="200">Brands Filter&nbsp;</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>&nbsp;&nbsp; <span class="txtLabel">Display</span> &nbsp;&nbsp;</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&nbsp;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&nbsp;To&nbsp;Excel</td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</body>
</html>

我的问题有两个:

如何将其包含在另一个页面上?

我试图注册我的控件并引用它,但我错过了大会信息。我似乎找不到有关如何在程序集中注册控件的任何信息:

<%@ Register TagPrefix="cc1" Namespace="Controls.MultiLevelReportFilter" 
Assembly="MultiLevelReportFilter" %>

Visual Studio 在上面的行中报告错误,因为程序集不正确。

从另一个页面调用它时是否可以隐藏某些控件?

4

3 回答 3

1

您的控件继承了 controls.MultiLevelReportFilter(小 c),而您的 Register 标签使用 Controls.MultiLevelReportFitler(大 C),这可能是您的问题的一部分。

或者,您可以使用以下语法:

<%@ Register TagPrefix="cc1" TagName="MultiLevelReportFitler" Src="/Controls/MultiLevelReportFitler.ascx" %>

请注意,假定用户控件存在于您使用它的同一个 Web 应用程序中。

至于隐藏控件,你可以做任何你想做的事。只需根据您希望的任何条件将可见属性设置为 false(例如,设置用户控件的属性、查看 QueryString 值或当前页面的 URL 等)

于 2013-07-31T18:58:17.880 回答
1

用户控件不是自定义服务器控件。

如果您在同一个项目中有您的 ascx,只需进入设计模式并将其拖到您想要的页面上。

如果这是您想在同一个解决方案中的多个项目之间共享的内容,Scott Gu 写了一篇文章,解释了如何引用和使用您的用户控件

如果没有,最好创建一个服务器控件

于 2013-07-31T18:58:45.060 回答
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;
于 2013-07-31T18:59:54.450 回答