سؤال

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

protected void SendBoxrep_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    MembershipUser Admin = Membership.GetUser(User.Identity.Name);

    if (e.CommandName == "del")
    {
        Guid g = new Guid(e.CommandArgument.ToString());
        MessageClass.deleteMessage(g);

        SendBoxrep.DataSource = MessageClass.selectMessagesUser(Admin);
        SendBoxrep.DataBind();
    }

}

    public static void deleteMessage(Guid id)
{
    foreach (Message item in MessageClass.LoadAll(id))
    {
        MDB.Messages.DeleteOnSubmit(item);

        MDB.SubmitChanges();
    }
}
هل كانت مفيدة؟

المحلول

حاول حذف بناءً على المفتاح الأساسي لجدول UR حذف.

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

بعد حذفه عند تحديث الصفحة ، يحدث الحدث نفسه ، أي إذا قمت بالضغط على زر حذف في صف لحذف الرسالة الحدث SendBoxRep_ItemCommand أطلق النار وأخذ commandaRgument يحذف السجل. مرة أخرى ، يمكنك الضغط على F5 لتحديث الصفحة ثم يتم إطلاق الحدث السابق لـ DELETE. لذلك يتم حذف سجلك.

الآن باستخدام المفتاح الأساسي (معرف الرسالة) سيتم حذف سجل واحد فقط حتى لو قمت بإطلاق النار على نفس الحدث مرتين بالضغط على F5.

نصائح أخرى

في مثل هذا السيناريو ، حققت نجاحًا في استخدام Response.redirect لإعادة تحميل الصفحة والتخلص من معلومات Postback بعد معالجة حدث Postback. وبهذه الطريقة ، لن يحدث Postback مرة واحدة فقط وتحديث الصفحة باستخدام المتصفح لا ينبغي أن يسبب أي مشاكل. بدلا من الاتصال بالمكرر. databind ...

Response.Redirect(Request.RawUrl);

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

تظهر التعليقات أعلاه أنك تحديث صفحتك عبر F5 ؛ من المعروف أن هذا يسبب مشاكل في صفحات ASP.NET بسبب كيفية نشرها ، وكيفية عمل دورة حياتهم. أوصي بدلاً من ذلك بإنشاء زر تحديث على الصفحة نفسها ، وهذا يقوم ببذل البث وتحديث المعلومات اللازمة التي يرتبط بها المكرر.

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