0

categorynameを制約するUC_Categories.ascx (UC_1)があります。UC_Products.ascx (UC_2)は、カテゴリ名で製品を表示します。それらは両方ともBookShop.aspx(ページ)と呼ばれるページにあります

ページで、ユーザーがUC_1をクリックすると(ステップ1)、カテゴリ名でUC_2がレンダリングされます(ステップ2)。カテゴリ名であるparamを使用してPageにリクエストを送信することにより、ステップ1を処理します。ステップ2新しいUC_2を作成し、categorynameであるProperties値を設定し、FillProductByCategoryNameメソッドを実行します。次に、ページのPlaceHolderにUC_2を追加します。しかし、私はUC_2を表示しません。

みんなからの助けや提案が必要です。

私の質問を読んでくれてありがとう!ps:私の英語はあまり上手ではありません。

UC2のコードビハインド:

public void FillProduct()
    {

        ProductsMN productsMN = new ProductsMN();
        if (dlBook == null)
        {
            dlBook = new DataList();
            dlBook.DataSource = productsMN.GetByCategoryName(CategoryName);
            dlBook.DataBind();
        }
        else
        {
            dlBook.DataSource = productsMN.GetByCategoryName(CategoryName);
            dlBook.DataBind();
        }
    }

    public string CategoryName { get; set; }

ページの後ろのコードで

 protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
        }
        string categoryName = Request.QueryString["categoryName"] as string;
        if (!string.IsNullOrWhiteSpace(categoryName))
        {
            BookContent.Controls.Clear(); // BookContent : Placeholder
            Control c = Page.LoadControl("~/UC/UC_Books.ascx") as UC.UC_Books;
            UC.UC_Books ucBook = new UC.UC_Books();
            ucBook.CategoryName = categoryName;
            ucBook.FillProduct(); //line 10
            BookContent.Controls.Add(ucBook); //line 11
        }

    }

ページのPageLoadで、useBookにデータが含まれています。しかし、ページ(ビュー)にはデータが表示されません。// line11が実行されていないか、trueではないと思います。

4

1 に答える 1

1

パブリックプロパティとUserControlのコントロールのコンストラクターを親ページに公開する必要があります。

Usercontrolにラベルが付いているとします。

<asp:Label ID="MyLabel" runat="server" visible="true"/>

UserControlのコードビハインドにこれを追加します。

    //Constructor
    public MyUserControl()
    {
        Category = new Label();
    }
    //Exposing the Label
    public Label Category
    {
        get { return this.MyLabel; }
        set { this.MyLabel = value; }
    }

UserControlを親ページに追加し、そのIDが「MyUserControl」であると想定します。

UserControlのラベル値を何かに設定するには、次を使用します。

MyUserControl.Category.Text=Response.QueryString["categoryname"];//Obviously you would want to encode it first.

UserControlの分離コードで親ページの関数を呼び出す必要がある場合は、デリゲートを使用する必要があります。ただし、この方法はお勧めしません。

于 2012-07-21T03:52:56.640 に答える