0

シナリオはそのようなものです:

たとえば、テーブル、htmlテーブルがあり、テーブルにはいくつか<td>のコントロールがあり、それぞれにコントロールのセットがあります。

これはその特定<td>のものに関連していますが、必ずしも<td>スコープ内に含まれているとは限りません。

例えば ​​:

<asp:Label ID="Lbl_TlTp1" runat="server">

<table>
    <tr>
        <td ID="TD_1" runat="server">
            <asp:Label ID="LBL_1" runat="server" />
        </td>
        <td>
            <asp:TextBox ID="TBX_1" runat="server" /> 
        </td>
    </tr>
</table>

Lbl_TlTp1今、私はヒントLabel 、DataLabel LBL_1 、TextBoxに対処できるようにしたいと思いますTBX_1

セットまたはコレクションとして、非常に柔軟にする(列挙などを許可する)。

それは、それらの制御項目をカプセル化するクラスまたはオブジェクトとして(その「セット」を)作成することによってですか...それぞれをメンバーとしてですか?

後で「セット」を1つのエンティティとして操作できるようにしたいと思います

setOfControls Sct1 = new setOfControls()

public void ActAppon(setOfControls section)
{
    execProcedure1(section);

    foreach(control ctr in section)
    {
        doTheThing(ctr);
    }
}
    ...etc'

このソリューションを実現するためのアプローチは何ですか?

4

1 に答える 1

1

マークUserControl (.ascx)アップのを作成し、Webコントロールのプロパティを公開して、それに取り組みます。

UserControl (.ascx)名前を付けるControlGroup.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ControlGroup.ascx.cs" Inherits="NameSpaceName.ProjectName.ControlGroup" %>
<asp:Label ID="Lbl_TlTp1" runat="server">

<table>
    <tr>
        <td ID="TD_1" runat="server">
            <asp:Label ID="LBL_1" runat="server" />
        </td>
        <td>
            <asp:TextBox ID="TBX_1" runat="server" /> 
        </td>
    </tr>
</table>

makePropertiesの背後にあるコードで(ControlGroup.ascx.cs)。お気に入り

namespace NameSpaceName.ProjectName
{
    public partial class ControlGroup: System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        { }

        public Label T1Tp1 { get { return Lbl_TlTp1; }}
        public Label LBL { get { return Lbl_TlTp1; }}
        public TextBox TBX{ get { return Lbl_TlTp1; }}
    }
}

これで、このUserControlを任意のASPXページで使用できます。それのためにあなたのユーザーコントロールを次のようなページに登録します

<%@ Page ....... %>
<%@ Register TagPrefix="uc1" TagName="CG" Src="ControlGroup.ascx" %>

そして、このコントロールを次のようなマークアップで使用します

<uc1:CG runat="server" id="cg1" />

また、ページのページ読み込みでは、このコントロールとそのプロパティにアクセスできます。お気に入り

protected void Page_Load(object sender, EventArgs e)
{
    cg1.T1Tp1.Text = "Some Text";
    cg1.LBL.Text = "Some Lable Text";
    cg1.TBX.Text = "Some TextBox Text";
}

または、ユーザーコントロールをプログラムでロードすることもできます。お気に入り

List<ControlGroup> setOfControls = new List<ControlGroup>();

for(int i=0; i<10 ;i++)
{
   ControlGroup cg1 = Page.LoadControl("~/ControlGroup.ascx") as ControlGroup;
   if(cg1 != null)
   {
     cg1.T1Tp1.Text = "";
     cg1.LBL.Text = "";
     cg1.TBX.Text = "";

     setOfControls.Add(cg1);
   }
}

別のコントロールに追加して、これらのコントロールのリストに入力することもできます。

お役に立てば幸いです。

于 2012-10-27T06:11:17.577 に答える