كيف يمكنني إضافة أعمدة غير محدودة إلى infragistics UltraGrid مرة واحدة فقط دون إلقاء استثناء؟

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

سؤال

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

UltraGridColumn ChangeColumn ، PCTCHGCOL ؛

if (e.Layout.Bands[0].Columns.Contains("Change"))
{
    changeColumn = e.Layout.Bands[0].Columns["Change"];
    pctChgCol = e.Layout.Bands[0].Columns["Percent Change"];
}
else
{
    changeColumn = e.Layout.Bands[0].Columns.Add("Change");
    pctChgCol = e.Layout.Bands[0].Columns.Add("Percent Change");
}
changeColumn.Formula = "[Publish Price] - [Override Price]";
pctChgCol.Formula = "if(0=[Publish Price] , 0 , ([Publish Price] - [Override Price])/[Publish Price] )";
هل كانت مفيدة؟

المحلول

كان هذا RTFM. يجب أن أسمي طريقة مختلفة:

يتغيرون

if (e.Layout.Bands[0].Columns.Contains("Change")) 

ل

if (e.Layout.Bands[0].Columns.Exists("Change")) 

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

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