سؤال

ويا ... سؤال بسيط جدا

وأنا أكتب عادة فب لكن يحدث أن برمجة مع ASP.NET 3.0 الإطار الآن ولا يمكن معرفة كيفية إصلاح هذه.

ولدي دروبدوونليست وإذا كنت تحديد قيمة بعض ... قانون بلدي لا وراء حفنة من الاشياء وإخراج البيانات ......

والآن، ... إذا كنت إعادة تحميل الصفحة (أي F5 الصحافة أو الشيء القليل تحديث على المستعرض) .... كل ما عندي إعادة تعيين البيانات كما لو بلدي selectedIndex هي 0 .... ولكن القيمة الفعلية تظهر هو واحد السابق I المختارة! ... أحاول إعادة تعيين المؤشر في قانون بلدي وراء في ولا شيء "إذا ispostback = كاذبة" بيان ... ولكن لا شيء يعمل ...... انها مثل القيمة تم تخزينها مؤقتا I يمكن أن تفعل التغيرات ذلك ...

... سيكون موضع تقدير أي مساعدة:)

و(مزيد من التوضيح: .... إذا الطباعة إلى الشاشة mydropdownlist.selectedIndex من وجهة نظري تحميل الصفحة الفرعية ... وسوف ترجع 0 .... ولكن الفهرس المحدد على الشاشة هو واضح ليس ل0 واحد. ... وأنا أفهم لماذا هذا يحدث ... أنا فقط بحاجة إلى التوقف عن ذلك .... أو على الأقل أن يكون وسيلة لتحديد مؤشر في حالة العرض ...)

وأندرو

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

المحلول

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

لهذا السبب يجب أن لا نفترض خلال initialisation النصي أن قيم حقول النموذج الخاص بك وسوف تتناسب مع المحتوى الذي خدم في HTML. لديك النصي شم قيمها الحالية وتعيين متغيرات والدولة DOM تصل وفقا لذلك عند تحميل الصفحة.

إذا كنت تريد حقا أن ترمي كل التغييرات حقل النموذج المستخدم على تحديث / إبحار، الاتصال ب <لأ href = "http://www.w3.org/TR/DOM-Level-2-HTML/html.html# معرف 76767677 "يختلط =" noreferrer "> form.reset () في initialisation النصي لإعادته إلى الدولة HTML. ولكن يمكن أن يكون هذا الاستعمال غير ودي تماما في الظروف العادية.

نصائح أخرى

وهذا يبدو وكأنه عندما ضرب F5 لا يفعلون إعادة تحميل الصفحة الجديدة. أنت تقول أنه عند تحديد شيء من دروبدوونليست بك أن تفعل مدونة باقة وراء الاشياء. حسنا هذا العمل هو إعادة النشر. حتى ضرب F5 AFTER لن يعتبر هذا الإجراء دعوة جديدة إلى صفحة حتى في حال (IsPostBack == كاذبة) ستفشل لأنه هو إعادة النشر.

والعمل الأول تسبب لها أن تكون إعادة النشر حتى ضرب F5 بعد ذلك، سيكون إعادة النشر.

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

تعطيل veiwstate على مربع الاختيار إذا كنت لا تحتاج إليها.

هل حاول مسح ذاكرة التخزين المؤقت في المتصفح الخاص بك؟ معظم المتصفحات تدعم مراقبة + F5 باعتباره التحديث الثابت الذي سوف مسح ذاكرة التخزين المؤقت للصفحة الحالية وإعادة تحميل الصفحة بأكملها من الخادم.

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

enter code

و`<٪ @ صفحة اللغة =" C # "AutoEventWireup =" الحقيقية "CodeFile =" homepagestate.aspx.cs "يرث =" _ homepagestate "٪>

< form id="form1" runat="server">

<آسيا والمحيط الهادئ: دروبدوونليست ID = "DropDownList1" RUNAT = "الخادم" AutoPostBack = "الحقيقي" OnSelectedIndexChanged = "قانون حالة الطوارئ">             <آسيا والمحيط الهادئ: عنصر القائمة القيمة = "- اختر واحدة أو أكثر من الدول -">             <آسيا والمحيط الهادئ: قيمة عنصر القائمة = "ألاباما">

    < /asp:DropDownList>

<آسيا والمحيط الهادئ: دروبدوونليست ID = "DropDownList2" RUNAT = "الخادم" AutoPostBack = "صحيح">           <آسيا والمحيط الهادئ: عنصر القائمة القيمة = "- اختر واحدة -">           

      < asp:Button ID="Button1" runat="server" Text="Submit" /></div>
</form>

وباستخدام النظام؛

وباستخدام System.Data؛

وباستخدام System.Configuration؛

وباستخدام System.Collections؛

وباستخدام System.Web؛

وباستخدام System.Web.Security؛

وباستخدام System.Web.UI؛

وباستخدام System.Web.UI.WebControls؛

وباستخدام System.Web.UI.WebControls.WebParts؛

وباستخدام System.Web.UI.HtmlControls؛

والجمهور الطبقة جزئية _homepagestate: System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

    if ( !IsPostBack )

    {

       // sel();

        DropDownList2.SelectedIndex = 0;

    }

و}

protected void sel(object sender, EventArgs e)

{

    Response.Write(DropDownList2.SelectedIndex);

    //DropDownList2.selecteditem = 0;

}

و}

و'

وهذا هو في الواقع من parrkid على سؤال ستاكوفيرفلوو مختلفة، ولكن إضافة هذا في نهاية الصفحة الخاصة بك:

<script language="javascript">
  var B01 = document.getElementById('<%=YourDropDownList.ClientID%>');
  B01.selectedIndex = 0;
</script>

نعم ... الإختراق الإجمالي لما هو الأرجح asp.net لكن IMHO :-P

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