2008-12-17 50 views
1

我希望在Web用戶控件之間傳遞值,而無需將任何代碼寫入用戶控件所在的主頁面。我做了那樣的事情,但做完之後,我需要點擊double來傳遞值。在Web用戶控件之間傳遞值 - DifferentQuestion

的我都做了什麼的例子:

部用戶控制(代碼隱藏)

 protected void Page_Load(object sender, EventArgs e) 
     { 
      int productId = ProductUserControl.selectedProductId; 
      ... doing some bind work with productId 


     } 

產品用戶控制

 public static int selectedProductId; 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
     protected void lvDepartments_ItemCommand(object sender, ListViewCommandEventArgs e) 
     { 
     if (e.CommandName == "selectDepartment") 
      { 
       selectedProductId = int.Parse(e.CommandArgument); 
      } 
     } 

在此先感謝...

+0

順便說一下,爲什麼我在標題中加入「不同的問題」是我問過類似的問題,它的不同吧。 – Tarik 2008-12-17 23:08:45

回答

1

在您的部門用戶控制中,您試圖在產品用戶控件中設置selectedProductId的值之前獲取它的值。這就是爲什麼你沒有得到你期望的價值,直到你回發兩次。

產品用戶控件將其設置在ItemCommand事件中後,您需要獲取它。也許把部門用戶控制代碼放在Page_LoadCompleted中......雖然我不確定這是否也能工作。

另一種方法是讓Product User Control在Department User Control中設置公共屬性,而不是讓Department User Control嘗試讀取Product User Control中的屬性。

這個問題似乎是一個頁面生命週期問題。 http://www.robincurry.org/blog/content/binary/o_aspNet_Page_LifeCycle.jpg

我確信還有比這更好的方法。

+0

Page_LoadCompleted無法正常工作:/ – Tarik 2008-12-17 23:33:04

0

嘗試使用委託更乾淨實現這一目標,例如here