2013-03-06 93 views
0

我試圖讓一個OnCheckedChanged事件觸發在GridView中的asp:CheckBox。但是當我把它放到一個GridView中時,它不會觸發代碼隱藏中的OnCheckedChanged。oncheckedchanged在GridView中沒有觸發CheckBox時

如果我把相同的複選框放在gridview之外,那就太好了。

我試過將功能設置爲RowCommand,那也不管用。

這裏是我的複選框:

<asp:CheckBox ID="HoldBillingCheckBox" runat="server" key='<%# Eval("CustomerItemID") %>' Checked='<%# Eval("HoldBilling") %>' OnCheckedChanged="CustomerItemsGridView_CheckChanged" Enabled="true" EnableViewState="true" AutoPostBack="true"/> 

在我看來,當你試圖總結與各種視圖的複選框纔會出現這種情況。

有沒有人有任何建議?我搜索了很多不同的解決方案,但似乎沒有任何工作(他們主要告訴我加AutoPostBacktrue ...或enableviewstate爲真)。

在此先感謝!

+0

儘可能記住應該有一行加載事件,基本上是多次實例化的複選框,因此需要在每行加載時連接處理程序。我想你也需要視圖狀態 – Charleh 2013-03-06 20:54:18

+0

順便說一句 - ASP-Classic是VBScript,而不是C# – 2013-03-06 20:55:35

+0

我懷疑你有一個控制所有權問題 - 因爲控件不屬於頁面,它不處理它的事件。 – GalacticCowboy 2013-03-06 21:40:50

回答

1

如果您正在頁面的每個負載上重新綁定您的gridview,那麼您正在銷燬CheckChanged事件的狀態。重新綁定網格時,它會使頁面上一個「版本」中的任何控件失效。

您需要添加if (!IsPostBack)作爲條件以防止您的GridView重新綁定。

+0

你的意思是在Page_Load?但事件甚至不會發生。它甚至沒有在OnCheckedChanged函數中打破我的斷點。 – w1ck3d64 2013-03-06 21:22:30

+0

您應該將代碼發佈到您的GridView綁定的位置。如果你在每個帖子上重新綁定它,那麼你基本上就是撤銷了GridView中任何控件的任何事件綁定。 – 2013-03-06 21:27:48

+0

技術上..如果我刪除autopostback並沒有綁定..它應該仍然激發我的功能嗎?我刪除了回傳和重新綁定,但它仍然不會觸發我的功能 – w1ck3d64 2013-03-06 21:34:28

相關問題