فقدان أحداث Button.Click بعد أول إعادة النشر الجزئي في UpdatePanel

StackOverflow https://stackoverflow.com/questions/180366

سؤال

ولدي صفحة له مثيل واحد من على UserControl أن نفسها لديها UpdatePanel واحد. داخل UpdatePanel العديد من الضوابط زر. والسلكية الحدث Click لهذه الضوابط حتى في التعليمات البرمجية الخلفية، في الحدث التهيئة في UserControl.

وأحصل على الحدث Click لزر الأولى دفع، في كل مرة، لا مشكلة. بعد ذلك، وأنا فقط الحصول على انقر أحداث زر واحد (SearchButton) - يتم تجاهل بقية. ولقد تضمنت التعليمات البرمجية للتحكم أدناه - على سبيل الإيجاز، لقد استبعاد أساليب معالج الحدث انقر فوق، ولكنها جميعا من معيار "باطل Button_Click (المرسل وجوه، EventArgs ه)" متنوعة. أي أفكار؟

<asp:UpdatePanel ID="PickerUpdatePanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Panel ID="Container" runat="server">
            <div>
                <asp:TextBox ID="PickerResults" runat="server" style="margin-right: 3px;" SkinID="Plain" />
                <asp:Image
                    ID="LaunchPopup" runat="server" ImageUrl="~/images/icons/user_manage.png" 
                    ImageAlign="Top" BorderColor="#294254" BorderStyle="Dotted" BorderWidth="1px" 
                    Height="20px" Width="20px" style="cursor: pointer;" />
            </div>
            <asp:Panel ID="PickerPanel" runat="server" DefaultButton="OKButton" CssClass="popupDialog" style="height: 227px; width: 400px; padding: 5px; display: none;">
                <asp:Panel runat="server" id="ContactPickerSearchParams" style="margin-bottom: 3px;" DefaultButton="SearchButton">
                    Search: <asp:TextBox ID="SearchTerms" runat="server" style="margin-right: 3px;" Width="266px" SkinID="Plain" />
                    <asp:Button ID="SearchButton" runat="server" Text="Go" Width="60px" SkinID="Plain" />
                </asp:Panel>
                <asp:ListBox ID="SearchResults" runat="server" Height="150px" Width="100%" SelectionMode="Multiple" style="margin-bottom: 3px;" />
                <asp:Button ID="AddButton" runat="server" Text="Add >>" style="margin-right: 3px;" Width="60px" SkinID="Plain" />
                <asp:TextBox ID="ChosenPeople" runat="server" Width="325px" SkinID="Plain" />
                <div style="float: left;">
                    <asp:Button ID="AddNewContact" runat="server" SkinID="Plain" Width="150px" Text="New Contact" />
                </div>
                <div style="text-align: right;">
                    <asp:Button ID="OKButton" runat="server" Text="Ok" SkinID="Plain" Width="100px" />
                </div>
                <input id="SelectedContacts" runat="server" visible="false" />
            </asp:Panel>
            <ajax:PopupControlExtender ID="PickerPopEx" runat="server" PopupControlID="PickerPanel" TargetControlID="LaunchPopup" Position="Bottom" />
        </asp:Panel>
   </ContentTemplate>
   <Triggers>
        <asp:AsyncPostBackTrigger ControlID="AddButton" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="SearchButton" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="AddNewContact" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

public partial class ContactPicker : System.Web.UI.UserControl
{
    protected void Page_Init(object sender, EventArgs e)
    {
        SearchButton.Click += new EventHandler(SearchButton_Click);
        AddButton.Click += new EventHandler(AddButton_Click);
        OKButton.Click += new EventHandler(OKButton_Click);
    }

    // Other code left out
}
هل كانت مفيدة؟

المحلول

ويبدو أن إضافة UseSubmitBehavior = "كاذبة" للتعريفات زر قد حل مشكلتي. ما زلنا لا نعرف لماذا هذا الزر الأول انقر عملت على الإطلاق.

نصائح أخرى

والسبب الأكثر ترجيحا لهذا سيكون معرفات العميل الذي يولد صافي لضوابطها تغيير. يتم تعيين هذه حيوي ويمكن تغيير بين إعادات النشر / إعادات النشر جزئية.

إذا يتم إضافة عناصر تحكم إلى لوحة حيوي، يمكن معرف الزر الخاص بك أن تكون مختلفة بين إعادات النشر تسبب صافي لتكون قادرة على ربط الحدث انقر فوق إلى معالج الحدث الصحيح في التعليمات البرمجية.

في حالتي، كان لي LinkButton داخل معالج الحدث dgPatients_ItemDataBound أن استخدام الخاصية PostBackUrl.

ولحظة لقد غيرت LinkButton إلى HyperLink، وذهب بعيدا المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top