سؤال

تحرير 1

اعتقد ان المشكلة تنبع من التالية.الدالة التي تملأ المنسدلة جزء مجموعات عرض الأعضاء إلى CountyName.ثم عندما حاولت مجموعة SelectedText أو EditValue ، كما اقترحت أن وظيفة ترجع فقط CountyID الذي حاول أن تطابق شيء في القائمة المنسدلة DisplayMember.أريد أن تطابق ذلك إلى شيء في ValueMember قائمة.

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

lkuResidenceCounty.ItemIndex = Convert.ToInt32(row["ResidencyCountyID"].ToString());

المشاركة الأصلية

لدي بحث مربع(DevExpress) على عضو في شكل أنني ملء القيم الممكنة في من DB مع هذا الرمز -->

        lkuResidenceCounty.Properties.DataSource = ConnectBLL.BLL.Person.CountyList();
        lkuResidenceCounty.Properties.PopulateColumns();
        lkuResidenceCounty.Properties.DisplayMember = "CountyName";
        lkuResidenceCounty.Properties.ValueMember = "CountyID";
        lkuResidenceCounty.Properties.Columns[0].Visible = false;
        lkuResidenceCounty.Properties.Columns[2].Visible = false;
        lkuResidenceCounty.Properties.Columns[3].Visible = false;

هذا يعمل على ما يرام كما CountyName يتم عرض كما هو متوقع.

ومع ذلك ، عندما أحاول تحميل عضو القائمة قيمة لهذا الحقل باستخدام أدناه ، والتي هي جزء من وظيفة أن يأخذ صف واحد من البيانات -->

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

احصل على مربع فارغ.كنت قد تدخلت من خلال الكود الصحيح ID يتم إرجاع الأعضاء.

للأسف الإجراء المخزن إلى ملء القائمة المنسدلة خيارات تسحب من الصيانة الجدول مع الأعمدة "CountyName" & "CountyID".لذلك هذا هو الصحيح.للأسف الإجراء المخزن لتحميل شخص معين الحالي في مقاطعة تسحب من الشخص الجدول حيث يوجد عمود يسمى "ResidencyCountyID".فمن سميت بذلك لأن هناك أيضا "ResponsibilityCountyID" عمود.

أنا بحاجة إلى وسيلة بالنسبة لهم على حد سواء إلى التعايش ، أي حلول ؟

وذلك بفضل!

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

المحلول

DisplayMember و ValueMember تستخدم لملء عنصر التحكم مع قائمة اختيار القيم.إلى مجموعة مختارة قيمة بالسكان LookUpEdit التحكم, تعيين EditValue مكان الإقامة:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"].ToString();

ردا على تحرير الخاص بك:وفقا للوثائق:

المحدد حاليا الصف يحدد القيم المحرر تحرير قيمة عرض النص.قيمة BaseEdit.EditValue يتم الحصول عليها من RepositoryItemLookUpEditBase.ValueMember المجال ، بينما النص إلى العرض في مربع التحرير يتم الحصول عليها من RepositoryItemLookUpEditBase.DisplayMember مجال من الصف المحدد.

عند تغيير BaseEdit.EditValue, المحرر يحدد و يختار صف الذي RepositoryItemLookUpEditBase.ValueMember حقل يحتوي على قيمة جديدة.النص في مربع التحرير هو تغيير يعكس حديثا على الصف المحدد.

لا تستخدم هذه الضوابط ولكن يبدو لي أنه لا ينبغي أن يكون العامل كما وصفته أنت.أعتقد أن ToString() هو المشكلة لأن EditValue يقبل كائن لذلك فمن المحتمل توقع الباحث عن القيمة.محاولة:

lkuResidenceCounty.EditValue = (int)row["ResidencyCountyID"];

نصائح أخرى

على ValueMember الملكية يحكي قائمة في أي مجال من سحب من عند تعيين الخاصية قيمة.مرة واحدة كنت قد وضعت ValueMember إلى "CountyID" ، ثم عندما القائمة Databound ، فإنه سيتم تعيين جميع عناصر القائمة' قيمة الممتلكات إلى احترام الكائنات' CountyID المجالات.

ومن ثم يجب أن لا تفعل:

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

بل

lkuResidenceCounty.Properties.ValueMember = "CountyID";

كان على ما يرام تماما ، طالما كنت قد حددت بشكل صحيح الميدان أنت تحاول databind.مرة واحدة في قائمة الحصول على databound يجب أن تشاهد النتائج التي كنت أتوقع.

ولكن بعد النظر في التعليمات البرمجية الخاصة بك ، يبدو أنك غير متطابقة مجال عملك.في مكان واحد كنت تستخدم ResidencyCountyID و في آخر كنت تستخدم CountyID.وهذا هو الأرجح المصدر من الارتباك.معرفة ما الفعلي اسم الحقل هو و تأكد من تعيين ValueMember إلى ذلك.

التحديث

بعد قراءة تعليقك ، ما تبحث عن الخاص بك هو SelectedValue الملكية.على SelectedValue الملكية يحكي قائمة على القوة القيمة المحددة إلى أي مدخلات تعطيه.

أساسا لديك شيئين يجري هنا.ValueMember يحكي قائمة ما لاستخدام قيمة من مصدر البيانات ، SelectedValue الذي يحكي قائمة ما قيمة المحدد حاليا ينبغي أن يكون.

وماذا هو ان كنت في حاجة إلى نفس LookUpEdit لاثنين من أعضاء القيمة؟ هل تستخدم بذاتها أو في شبكة؟ إذا بذاتها، هل يمكن مبادلة خارج اثنين من المحررين مستودع اعتمادا على الصف الحالي. ولكن، هل هناك أكثر من 2 القيم الممكنة لValueMember؟ ومن شأن ذلك أن تعقيد الأمور أيضا.

وUPDATE

وعند النظر إلى تحرير الخاص بك، وأعتقد أنني أفهم ما يحدث أكثر من ذلك بقليل. لذلك، كنت لا ترغب في تغيير ValueMember الخاص بك (الذي يشير إلى عمود البيانات)، وإنما لتغيير قيمة المحرر؟ إذا كان الأمر كذلك، ثم يجب عليك بالتأكيد استخدام EditValue (لا SelectedText، وأنا لا أعتقد أن من المفترض أن تكون مجموعة)، وإسناد ذلك إلى صف [ "value_field"] مثل ذلك:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"];

وماذا يحدث عندما تفعل ذلك؟

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