إذا كنت تستخدم الصورة كنوع الزر في عرض الشبكة، فسيتم تنفيذ حدث أمر الصف مرتين عند تشغيله، ويقال إنه يظهر فقط في IE6 وIE5 وفايرفوكس وما إلى ذلك. ولا توجد مشكلة في My IE7 أيضًا يبدو أنها مرتبطة بإصدار IIS، وإنني أتطلع إلى تصحيح Microsoft.
لقد واجهت مشكلة بعد ظهر هذا اليوم. تم تنفيذ حدث أمر الصف في عرض الشبكة مرتين، كما تم تنفيذ إعادة النشر مرتين في البداية، كنت أظن أنها مشكلة في مصحح الأخطاء، وبعد التحقق من السجل، تأكدت من أنها كانت كذلك بالفعل أعدم مرتين.
لقد تحققت من الكود عدة مرات وقمت بإزالته جملة تلو الأخرى، ولكن لم يتم العثور على أي مشكلة حتى الآن، وبدأت أشك في أنه كان الماوس. لقد التقطت الحزمة ووجدت أنه تم إرسال طلبين بالفعل، ولم تتم معالجة الطلب الأول . في بعض الأحيان، قمت بتغيير نوع الزر من صورة إلى زر، وتم تنفيذه بشكل غير متوقع مرة واحدة فقط. ويبدو أن المشكلة تكمن في Imagebutton فقط.
من خلال بحث جوجل، وجدت أن العديد من الأشخاص قد واجهوا هذه المشكلة، وهي بالتأكيد خطأ في asp.net. سيؤدي النقر فوق الزر إلى إرسال طلبين إلى iis في المرة الأولى أقل بثماني بايت من المرة الثانية، مما يتسبب في عدم نجاح الطلب الأول، ثم سيتم إرساله مرة أخرى. لذلك، فإن أسهل ما يمكن التفكير فيه هو تجاهل الطلب الأول كالتالي هذا هو الحل الأول.
يوجد حاليًا حلان، ولا يعتبر أي منهما مثاليًا. الأول هو إضافة العبارة التالية إلى حدث أمر الصف:
إذا (طلب["x"] == فارغ && طلب["y"] == خالي)
Response.End();
من خلال هذا البيان يتم تحديد إحداثيات الصورة إذا كانت الإحداثيات فارغة فهو الطلب الأول لأن الطلب الأول غير صالح قم بإنهائه.
توصي Microsoft بالخيار الثاني: حاول عدم استخدام imagebutton في عرض الشبكة، ولكن استخدم الرابط أو الزر إذا كان يجب عليك استخدامه، فيمكنك استخدام رمز مشابه:
<asp:GridView ID="GridView1" runat="server">
<الأعمدة>
<asp:TemplateField>
<قالب العنصر>
<asp:ImageButton runat=معرف الخادم = "ImageButton1" CommandName = "حذف"
ImageUrl="" Commandargument='<%# DataBinder.Eval(Container,
"RowIndex") %>' OnCommand="ImageButton1_Command" />
</ItemTemplate>
</asp:TemplateField>
</الأعمدة>
</asp:GridView>
protected void ImageButton1_Command(object sender, CommandEventArgs e) {
GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString()));
}
قم بإضافة imagebuttong إلى TemplateField واستدعاء الحذف في الحدث.
لا أعرف إذا كان هناك حل أفضل يناقش المنتدى التالي هذه المشكلة بالتفصيل:
http://www.developersdex.com/asp/message.asp?p=1116&r=4641456&page=2 نتيجة المناقشة في الصفحة الأولى هي: لن تحدث هذه المشكلة إلا عندما يكون نوع الزر صورة، وهو ما يمكن أن يكون تخطيت لا تقرأها، هناك مناقشات وحلول مفصلة في الصفحتين التاليتين.
لقد واجهت مشاكل غريبة طوال اليوم، وكثيرًا ما يمكن تنفيذ نفس الكود لفترة من الوقت، ولكن ليس لفترة من الوقت، وتستمر الأشياء الغريبة في الحدوث في vs2005. لقد قمت للتو بمحاكاة العديد من المشكلات التي لا يمكن حلها في فترة ما بعد الظهر في المنزل وعملت بشكل جيد! ! سأعاني من الصداع مرة أخرى غدًا
http://www.cnblogs.com/bluewater/archive/2006/11/21/567871.html