0

リストの1つのオブジェクトを含むネストされたGridTemplateがあります。

            this.Gridparent.MasterTableView.NestedViewTemplate = new Custom14NestedTemplate(this.model.Material.First());

これは私のクラスを呼び出しますpublic class Custom14Template

このクラスは次を呼び出します。

    public void InstantiateIn(System.Web.UI.Control container)
    {
        var myPage = new Page();
        Control c = myPage.LoadControl("~/Custom14/Templates/View.ascx");
        container.Controls.Add(c);

        var x = new Label();
        x.Text = string.Format("qty : {0}.<br />", this.MyMaterial.Quantity);
        container.Controls.Add(x);
    }

現在、私のascxにはこれだけが含まれています:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="View.ascx.cs" Inherits="*snip*.Templates.View" %>

hello there

すべてが正しく表示されます

  【グリッドスタート】
  [項目 1 : 拡張]
     こんにちは数量: 23。
  [/項目 1]
  【項目2/】
  【項目3/】
  [/グリッド]

オブジェクトを ASCX に渡し、そこから HTML ディスプレイを構築したいと思います... (Asp.Net MVC)に相当する古いものです。<%= html.EditorFor() %>ラベルのような要素を作成してコンテナーに追加する代わりに (C# で html を作成するのは面倒です)。それは可能ですか?どのように?

4

2 に答える 2

0

私はこの答えを私の必要性に適合させました( ICustomControlなし):

呼び出し元のファイルには次のものが含まれています。

    public void InstantiateIn(System.Web.UI.Control container)
    {

       Page myPage = new Page();
       Control userControl = myPage.LoadControl("~/Templates/Edit.ascx");

       //this is the important part
       if (userControl is Edit)
       {
           Edit customControl = userControl as Edit;
           customControl.MyObject= this.PersistedObject;
       }

        container.Controls.Add(userControl);
    }

.ascx.csも少し変更されました:

public partial class Edit : System.Web.UI.UserControl
{

    public Produit MyObject { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        this.product.Text = MyObject.ProductName;
        this.Production.Text = MyObject.Production.ToString();

    }
}

また、ascxには、通常のasp:textbox(ID =製品と本番)の2つのプレーンが含まれています。

于 2012-11-01T21:26:23.207 に答える
0

http://asp.net-tutorials.com/user-controls/using/ "Loading Dynamically"で解決策を試してください。変数情報を渡したり、ユーザー コントロールでプロパティを設定したりするための簡単なソリューション

于 2013-09-21T01:03:57.060 に答える