2010-04-03 94 views
1

我有這個div一箇中繼器,在這裏我設置類,的onmouseover內部和onmouseout屬性從後面的代碼:頁面加載兩次因js代碼

<div id="Div1" runat="server" class="<%# getClassProduct(Container.ItemIndex) %>" onmouseover="<%# getClassProductOver(Container.ItemIndex) %>" onmouseout="<%# getClassProductOut(Container.ItemIndex) %>"> 

代碼隱藏:

public String getClassProduct(Object index) 
{ 
    int indexItem = Int32.Parse(index.ToString()); 
    if (indexItem == 3) 
     return "produs_box produs_box_wrap overitem lastbox"; 
    else 
     return "produs_box produs_box_wrap overitem"; 
} 

public String getClassProductOver(Object index) 
{ 
    int indexItem = Int32.Parse(index.ToString()); 
    if (indexItem == 3) 
     return "this.className='produs_box produs_box_wrap overitem_ lastbox'"; 
    else 
     return "this.className='produs_box produs_box_wrap overitem_'"; 
} 

public String getClassProductOut(Object index) 
{ 
    int indexItem = Int32.Parse(index.ToString()); 
    if (indexItem == 3) 
     return "this.className='produs_box produs_box_wrap overitem lastbox'"; 
    else 
     return "this.className='produs_box produs_box_wrap overitem'"; 
} 

好,問題是,我的Page_Load被激發兩次,在那裏,我有一些代碼,我想只執行一次:

if (!Page.IsPostBack) 
    { ..code to execute once } 

此代碼最初被觸發,並在頁面呈現後,再次被調用,並由於該js而再次執行...

任何人都可以推薦解決方法嗎?

在此先感謝。

更新:只發生在Firefox中。在鉻,它工作正常...

「解決方案」:停用YSlow ....只是「可怕的」。

+0

您應該發佈整個頁面,以便我們可以看到上下文,這可能是重要信息存在的位置。 – 2010-04-03 17:52:58

+0

那麼,洞頁(aspx)有350行鱈魚。如果我只從上面評論這個div,所有的工作都很棒。 – 2010-04-03 17:54:48

+0

我建議在調試器中觀察它,並檢查堆棧跟蹤以查看誰正在調用代碼兩次。 – Ray 2010-04-03 18:00:16

回答

0

你可以使用OnItemCreated事件來做到這一點嗎?

假設,在div是每個項目的一部分,你可以捕獲到事件&做FindControlItem獲得句柄div。檢查ItemIndex &根據需要在代碼隱藏中分配類。

這有幫助嗎?

+0

嗨,在OnItemCreated事件完成,但問題仍然存在。 – 2010-04-03 18:27:33

+1

你有任何可能導致刷新的Firefox插件嗎?當頁面加載第二次時,「Page.IsPostBack」的值是多少? – shahkalpesh 2010-04-03 18:39:35

+0

嗨。 Page.IsPostBack也是第二次錯誤。我停用螢火蟲,似乎問題仍然存在... – 2010-04-03 18:54:09

0

我用Server.Transfer替換了Response.Redirect,因爲它被建議爲新的做事方式。此後,頁面加載兩次,Chrome中的「返回」按鈕返回到上一頁並立即返回到當前頁面。 我用Response.Redirect取代了Server.Transfer,一切恢復正常。我希望這可以幫助別人。