Infragistics UltraGrid: كيفية إزالة التحديد الافتراضي من الصف الأول

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

سؤال

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

ولكن الملكية Selected.Rows فارغة، وكذلك الممتلكات ActiveRow هو null.

وهكذا يظهر التوالي التي سيتم اختيارها، لكنها في الواقع ليست كذلك، مما يجعل من المستحيل لإزالة التحديد.

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

وشكرا.

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

المحلول

وبعد بعض المزيد من البحوث لقد وجدت الحل، والتي سوف أشارك معكم جميعا:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();

نصائح أخرى

ولدي اكساكتيلي نفس المشكلة كان لديك، ولكن الحل خيري شينك للا تعمل بالنسبة لي. لقد استخدمت هذه الخدعة:     MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]؛     MyUltraGrid.ActiveRow = فارغة؛

وحاول هذا:

this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;

وهذا ما ساعدني في قمع "النشطة المظهر" للشبكة:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

إذا كنت أيضا لا نريد صف إلى أن يتم وضع علامة المحدد، عليك أن تفعل الشيء نفسه عن "المحددة المظهر":

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

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

ويتم مزامنته ActiveRow والشبكة حتى مع CurrencyManager، لذلك افتراضيا الصف الأول في الشبكة تظهر تسليط الضوء عليها. سوف إعادة تعيين ActiveRowAppearance وActiveCellAppearance إزالة تسليط الضوء الافتراضي من ActiveRow.

        this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
        this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();

ولكن من المهم أن نلاحظ أن هذا لا يمنع من أن تصبح الصف الصف نشط، انها مجرد أن الشبكة لم تعد يسلط الضوء على التوالي النشط. منذ الصف لا يزال نشطا (وليس هناك طريقة لمنع هذا) أي شيء آخر أن يسلط الضوء على التوالي نشط سيظل تسليط الضوء على التوالي. على سبيل المثال إذا قمت بتحميل مكتبة نمط (* .isl) ملف في التطبيق الخاص بك الذي ينطبق على النمط إلى ActiveRow، فإنه لا يزال عرضه.

إذا كنت ترغب في تعطيل ظهور الخلاف النشط بطريقة أكثر شمولا، وتجاهل كافة الإعدادات الممتلكات وإعدادات مكتبة نمط تماما، يمكنك القيام بذلك:

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

ملاحظة أن هذه الخاصية أضيف في V9.2 ولا توجد في الإصدارات القديمة.

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

    private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
    {
        LayoutVisulizerUltraGrid.ActiveRow = null;
    }

وتعطيل الصف المحدد تماما، ثم وضع ActiveRow فارغة يجب مسح التحديد.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top