2012-07-21 90 views
0

我有一個UC_Categories.ascx (UC_1),它約束了categoryname。 UC_Products.ascx (UC_2)將按類別名稱顯示產品。他們兩人都是在稱爲BookShop.aspx(頁)在asp.net中的兩個用戶控件之間傳遞數據

在頁面,當用戶點擊一個UC_1(步驟1),它將呈現一個UC_2的類別名稱(步驟2)。我通過發送帶有參數爲param的請求來處理步驟1,其類別名稱爲頁面。 Step2新建一個UC_2,設置屬性值爲categoryname,並執行FillProductByCategoryName方法。然後將UC_2添加到頁面中的PlaceHolder。但我不顯示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不是執行或不是真實的。

+1

您是否嘗試過公共財產? – 2012-07-21 03:44:20

回答

1

您需要將公共屬性和UserControl的控件的構造函數公開到父頁面。

說你的用戶控件得到了一個標籤:

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

在用戶控件的代碼隱藏添加此。

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

假設您已將UserControl添加到父頁面,並且其ID是「MyUserControl」。

要設置用戶控件的東西標籤值使用此:

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

如果您需要調用在用戶控件的代碼隱藏父頁面的功能,你將不得不使用委託。我不會推薦這種方法。

+0

在頁面的代碼隱藏中 – hoanvd1210 2012-07-21 04:45:40

相關問題