سؤال

أرغب في استخدام مكون يعرض خاصية مصدر البيانات، ولكن بدلاً من تزويد مصدر البيانات بقائمة كاملة من الكائنات، أرغب في استخدام كائن بسيط فقط.هل هناك أي طريقة للقيام بذلك ؟

المكون المذكور هو DevExpress.XtraDataLayout.DataLayoutControl - وهذا لا علاقة له بالسؤال إلى حد ما.

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

المحلول

يتوقع Databinding كائن IEnumerable، لأنه يعدده تمامًا كما تفعل حلقة foreach.

للقيام بذلك، ما عليك سوى لف الكائن المفرد في ملف IEnumerable.

حتى هذا سيعمل:

DataBindObject.DataSource = new List<YourObject>().Add(YourObjectInstance);

نصائح أخرى

في ASP.NET2.0 ، يمكنك استخدام المجموعات العامة لجعل هذا الكائن المفرد قائمة كائن واحد فقط فيه يمكنك بياناته إلى أي عنصر تحكم في الخادم باستخدام ObjectDataSource ، على سبيل المثال

List<clsScannedDriverLicense> DriverLicenses = new
List<clsScannedDriverLicense>();
//this creates a generic collection for you that you can return from
//your BLL to the ObjectDataSource
DriverLicenses.Add(TheOneObjectThatYouHaveofType_c lsDriverLicense);

بعد ذلك سيبدو ObjectDataSource كما يلي:

<asp:ObjectDataSource ID="odsDL" runat="server"
SelectMethod="OrdersByCustomer"
TypeName="YourBLL.UtiltiesClassName"
DataObjectTypeName="clsScannedDriverLicense">
</asp:ObjectDataSource>

مصدر

لا أعتقد أن لديك الكثير من الخيارات بخلاف استخدام فئة تنفذ IEnumerable<T>.حتى لو كانت الخاصية DataSource ذكية بما يكفي لأخذ كائن عددي، فمن المحتمل أن تقوم بتحويله داخليًا إلى متجه.

ومع ذلك، سأفكر في استخدام مصفوفة بسيطة بدلاً من القائمة<T> لأن ذلك سيؤدي إلى تخصيص عدد أقل من الذاكرة.إذا لم يعجبك بناء جملة المصفوفة (وأيضًا لزيادة إمكانية القراءة) فيمكنك استخدام التابع المساعد:

t [] datasourceHelper :: tovector (t scalar) {return new t [] {scalar} ؛}

أنا بعد نفس الشيء أنت.لقد نشرت سؤالا جديدا ربط البيانات ثنائي الاتجاه لعنصر تحكم asp.net ذو القالب المخصص التي لديها قليلا من الرصاص.ترى ماذا يمكنك أن تصنع منه...

باستخدام هذا في formView الخاص بي:

databoundControl.DataSource = new [] { singleObject };
databoundControl.DataBind();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top