إعادة النشر يدمر عناصر تحكم المستخدم في GridView الأعمدة

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

سؤال

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

الصف بلدي إضافة الحدث فقط هل هذا:

    public void AddDataGridRow()
    {
        List<object> defRow = new List<object>();

        for (int i = 0; i < fieldNames.Count; i++)
        {
            defRow.Add(GetDefaultValueFromDBType(types[i]));   
        }

        dt.Rows.Add(defRow);
    }

فمن أطلق من زر في عنصر تحكم المستخدم أن تنفيذ مثل هذا:

    protected void Button1_Click(object sender, EventArgs e)
    {
        ((Scoresheet)(this.Page)).AddDataGridRow();
    }

في الحدث load لا حفنة من الاشياء على تشغيل أول تعيين GridView ولكن لا تشغيل هذا مرة أخرى باستخدام IsPostBack أن يقول.

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            Initialize();
    }

أي شخص لديه أي تلميحات لماذا المستخدم الضوابط التلاشي?

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

المحلول

لديك لإضافة عناصر التحكم إلى الشبكة على كل page_load، وليس فقط اذا كان (! إعادة النشر)

نصائح أخرى

هل لديك EnableViewState = صحيح على usercontrols وGridView؟

هو AddDataGridRow() طريقة تسمى قبل تهيئة()?فأنت أمام خيارين:

  1. ربط الشبكة على كل إعادة النشر وعدم استخدام viewstate (الفهرسه الخسارة)
  2. ربط الشبكة فقط في المرة الأولى (إذا (!IsPostBack)) و تأكد من أن المستخدم الخاص بك ضوابط الحفاظ على viewstate.

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

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