كيف يمكنني الحصول على الزر الذي هو داخل آسيا والمحيط الهادئ: UpdatePanel لتحديث صفحة كاملة؟

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

سؤال

ولدي زر داخل لجنة التحديث الذي أود أن تحديث صفحة كاملة. لقد حددت ChildrenAsTriggers="false" وUpdateMode="Conditional".

ولدي بعض التعليمات البرمجية هنا يوضح مشكلتي.

<asp:UpdatePanel ID="myFirstPanel" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
   <ContentTemplate>
      <asp:Button runat="server" ID="myFirstButton" Text="My First Button" onclick="myFirstButton_Click" />
      <asp:Button runat="server" ID="mySecondButton" Text="My Second Button" onclick="mySecondButton_Click" />
   </ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="mySecondPanel" runat="server">
   <ContentTemplate>
       <asp:Label runat="server" ID="myFirstLabel" Text="My First Label"></asp:Label>
    </ContentTemplate>
    <Triggers>
       <asp:AsyncPostBackTrigger ControlID="myFirstButton" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<asp:Label runat="server" ID="mySecondLabel" Text="My Second Label"></asp:Label>

والتعليمات البرمجية خلف:

protected void myFirstButton_Click(object sender, EventArgs e)
{
  myFirstLabel.Text = "Inside Panel " + DateTime.Now.ToString("mm:ss");
}
protected void mySecondButton_Click(object sender, EventArgs e)
{
  mySecondLabel.Text = "Outside Panel " + DateTime.Now.ToString("mm:ss");
}

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

هل كانت مفيدة؟

المحلول

وحاول إضافة إلى إعادة النشر الزناد لأول UpdatePanel، لزر الثاني. وأن أقول أن لوحة التحديث، أن الزر ينبغي أن إعادة نشر كامل.

نصائح أخرى

وScriptManager.GetCurrent (صفحة) .RegisterPostBackControl (زر)؛ سيحل مشكلتك

إذا قمت بإضافة PostBackTrigger إلى لوحة التحديث الأولى مثل ذلك

<Triggers>
   <asp:PostBackTrigger ControlID="mySecondButton" />
</Triggers>

وهذا يؤدي إلى مشاركة الظهير يحدث عند النقر فوق الزر الثاني. هذا هو السلوك المحدد كنت أبحث عنه.

وكان لي قضية مماثلة ولكن قليلا أكثر تعقيدا واستغرق مني أكثر من يوم واحد لمعرفة هذه الإجابة. (والجواب هو في الأساس نفسه الذي قدمهserkan. أنا مجرد التوسع في ذلك.) كان لدينا عنصر تحكم المستخدم ASP.NET التي كان لها زر التي، عند النقر عليها، ولدت صورة وأثار تحميل الصورة . عملت هذه الجميلة على صفحة عادية، ولكن ليس على الإطلاق عندما كان جزءا لا يتجزأ من عنصر تحكم المستخدم في لوحة التحديث. لم أتمكن من معرفة كيفية معرفة لوحة تحديث للقيام إعادة النشر المنتظم لهذا الزر فقط، لا سيما وأن كان زر داخل عنصر تحكم المستخدم دون السماح اضحا من الصفحة استخدامه.

وماذا عملت أخيرا كانت بسيطة للغاية. ليست هناك حاجة لمحاولة تحديد الزناد إعادة النشر للوحة. بدلا من ذلك، في Page_Load من التحكم المستخدم أضفت ما يلي:

    protected void Page_Load(object sender, EventArgs e)
    {
        // If the chart is within an update panel then we need to tell the script manager
        // to not do an asynch postback on chartdownload.  If we don't, the download
        // doesn't work.
        var scriptManager = ScriptManager.GetCurrent(Page);
        if (scriptManager != null)
        {
            scriptManager.RegisterPostBackControl(ChartSaveButton);
        }
        // Rest of Page_Load followed here...

وبالإضافة إلى ذلك، I إنشاء الخاصية ChartSaveButton للحصول على سهولة الوصول إلى السيطرة على زر:

    private Control ChartSaveButton
    {
        get { return FindControl("btnDownloadChart"); }
    }

و( "btnDownloadChart" هو معرف الزر.)

وكانت طريق مؤلمة للوصول الى هنا، ولكن أنا ممتن الحل هو أنيق جدا. آمل أن يكون هذا سوف تساعدك.

وبالنسبة لي، هذا الإعداد لا معنى له. نضع في اعتبارنا أنه في حين أن لوحات التحديث يمكن أن يكون وسيلة رائعة لتحقيق اياكس مثل تأثير بسهولة جدا، وانهم ليست مثالية في جميع الحالات.

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

إذا التسمية ليست في لجنة التحديث الطريقة الوحيدة لتحديث القيمة هو عن طريق تحديث الصفحة بأكملها كما هو الحال في إعادة النشر العادي. سيكون لديك لتفعل إعادة توجيه إلى نفس الصفحة لتحديث ذلك. يعرف إطار اياكس للتعامل مع الموجهات حتى لو كان الطلب من لجنة تحديث حتى مجرد القيام Response.Redirect (...) على زر نقرة.

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