سؤال

هذا هو كيف DataBind العمل على الأسئلة...

لدي صفحة بسيطة مع GridView أنه لا بد (في aspx) رمز إلى ObjectDataSource.

أنا يمكن أن ننظر في اختيار() وظيفة تسمى من قبل ObjectDataSource أن نرى أنه على الحمل الأولي و على كل بعد الظهر.لدي بعض المنطق الذي يحدث على ظهورهم وظيفة من شأنها أن تؤثر على GridView البيانات, و أريد أن أدعو GridView.DataBind() في وقت لاحق في فترة ما بعد الظهر بعد ان قمت ببعض التغييرات.

هل هناك طريقة لمنع التلقائي rebinding أن يحصل على كل ما بعد الظهر ؟ هل هذا يعني أنني لا أستطيع استخدام ObjectDataSource هذه السيطرة ؟

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

المحلول

أنت محق في أن السيطرة غرامة الحبيبات كنت تبحث عن غير ممكن يتطلب رمز وراء.ASP.NET's مصدر البيانات الكائنات سوى الألم في**.ستجد أنه يمكنك استخدامها سوف تحصل على مثل هذه الحالات في الظهور مرة أخرى و مرة أخرى.

بعض المشاكل ستجد هي:

  • لا بقوة كتبته
  • غير المرنة (كما كنت قد لاحظت)
  • تعكير فوق عرض التعليمات البرمجية

لقد اتخذت جميع الوصول إلى البيانات في التعليمات البرمجية خلف و لم ينظر إلى الوراء.

نصائح أخرى

لقد حاربت مع هذا الربط التلقائي وكذلك فكرت ما الحل هنا:

  1. إزالة "DataSourceID" من صفحة ASPX عندما لا تعيين لا يوجد الربط التلقائي
  2. تعيين DataSourceID في CodeBehind فقط عند ربط البيانات المطلوبة:myGridView.DataSourceID = "MyDataSource";
  3. لا ندعو myGridView.DataBind() صراحة, ربط البيانات يحدث تلقائيا في عرض مسبق

استغرق مني بعض الوقت لمعرفة ذلك, ولكن الآن wverything يعمل بشكل جيد.

السياق

يمكنني استخدام ObjectDatasource لأنه handels كل الترحيل و الفرز من Gridview تلقائيا بالنسبة لي.أنا باستخدام طبقة البيانات مع Linq2SQL واستخدام تخطي() وأخذ() طرق لتحميل فقط كمية البيانات اللازمة لملء صفحة واحدة من GridView.

باستخدام SelectMethod و SelectCountMethod من ObjectDataSource

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

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