請先點擊已經快把我逼瘋了2現在天 - 希望以前有人已經看到了這一點。ItemCommand不觸發在中繼器或GridView控件
我有這樣的問題,即中繼器或網格視圖內的控制的第一次點擊未能激發ItemCommand事件,隨後的每次點擊工作。該控件被加載到上Base.aspx的佔位符,像這樣
private void LoadUserControl()
{
string controlPath = LastLoadedControl;
if (!string.IsNullOrEmpty(controlPath))
{
ph.Controls.Clear();
UserControl uc = (UserControl)LoadControl(controlPath);
ph.Controls.Add(uc);
}
}
我不知道這是否是一個視圖狀態的問題,並在頁面中的事件,我應該使用的DataBind()。我在不同的頁面事件中嘗試了數據綁定,使頁面上的視圖狀態和控件的結果無變化。
這裏的GridView的模板,但我也有一個Repeater控件相同的行爲,所以我不認爲它是這個問題的控制。
<ItemTemplate>
<asp:RadioButton ID="rbEnable" GroupName="MyGroup" runat="server" Text="Enabled" Checked="<%# ((EducateMe.BaseTypes.AbstractLink)Container.DataItem).IsActive == true %>" />
<asp:RadioButton ID="rbDisable" runat="server" GroupName="MyGroup" Text="Disabled" Checked="<%# ((EducateMe.BaseTypes.AbstractLink)Container.DataItem).IsActive != true %>" />
<asp:Button ID="btnEnable" runat="server" CommandArgument="<% # Container.DataItemIndex %>" CommandName="Enable" ToolTip="Enable" Text="Save" />
<asp:Button ID="btnDisable" runat="server" CommandArgument="<% # Container.DataItemIndex %>" Visible="false" CommandName="Disable" ToolTip="Disable" Text="Disable" />
</ItemTemplate>
一些進一步的信息,這可能是相關的:
我已經注意到是在用戶控件的Page_Load事件是在那裏我重新綁定控件。這可能是控制狀態被重寫的原因,但是如果我在ascx中向該區域添加if(!IsPostback),則此代碼段不會像在aspx頁面上那樣觸發。那將是重新控制我認爲的控制的正確部分。
哈 - 真棒的工作Beemer - 當然這是固定它,謝謝你的幫助堆 - 我一定會在未來看這一個:-D – MikeW 2010-10-28 23:46:34
這幫了我很多!你不知道我今天因爲這個問題而遭受的挫折!我喜歡你。你讓我快樂。你完成了我...... :) – hofnarwillie 2012-02-22 20:14:05
我很開心我在一年半後仍然從這個答案得到愛=)沒問題,夥計們。 – BeemerGuy 2012-02-29 20:05:46