PDA

View Full Version : مشکل در پاس دادن مقدار به ValueMember



Iran58
یک شنبه 11 مرداد 1394, 16:52 عصر
سلام
من داده را در جدول بصورت bigintذخیره کرده ام
ومی خواهم آنرا به combox نمایش دهم اما با آنکه تبدیل می کنم باز داده را بصورت null نمایش می دهد
radDropDownList1.ValueMember = Convert.ToInt32(x);
در کد بالا مثلا برای x مقدار 5400از جدول خوانده می شود ولی برای ValueMemberمقدار nullبجای 5400نمایش داده می شود
کد را چگونه باید اصلاح کنم

دلتنگ اسمان
یک شنبه 11 مرداد 1394, 18:20 عصر
با سلام

radDropDownList1.ValueMember = Convert.ToInt32(x);
مطمئنید از این کد استفاده میکنین؟! این باید خطا بده. ValueMember در کمبوباکس یک مقدار srtring مییگره نه مقدار int.
در ضمن اگه بازه اعداد سه رقم و یا چهار رقم هستش از int استفاده کن.مقدار ماکزیمم int:

int maxint = int.MaxValue;
یعنی :2147483647
هستش.

Iran58
دوشنبه 12 مرداد 1394, 07:01 صبح
ببخشید
منظورم
این کد است
comboBox.SelectedValue = employee.OrgChartID.ToString();
سمت OrgChartID داده نمایش داده می شود مانند عدد2147483647 ولی SelectedValue مقدار Null پر می شود

دلتنگ اسمان
دوشنبه 12 مرداد 1394, 07:31 صبح
comboBox.SelectedValue
یعنی مقداری را که کاربر در کمبوباکس انتخاب کرده است بررسی میکند.
شما کمبوبکس رو باز میکنین و مقداری را انتخاب میکنین . اگر برای این مقدار، شرط گذاشته باشین که شرط شما اجرا میشه. والا چیزی اجرا نمیشه.
میخواهید به comboBox.SelectedValue مقدار بدید و comboBox.ValueMember مقدار بگیره؟!!
منظورتون را واضح تر بیان کنید میخواهید چکار کنید ؟

Iran58
پنج شنبه 15 مرداد 1394, 09:49 صبح
باسلام
من کموباکس را باکدزیر پرکرده ام
public void SetComboBoxValue()
{
Dictionary<string, int> TypeMembership = new Dictionary<string, int>
{
{"موظف",1},
{"غیرموظف", 2}
};
cboTypeMembership.DataSource = TypeMembership;
cboTypeMembership.DisplayMember = "Key";
cboTypeMembership.ValueMember = "Value";
}
و متد زیر را نوشته ام
public int TypeMembershipBoardOfDirecotors
{
get { return Convert.ToInt32(cboTypeMembership.SelectedValue); }
set
{
cboTypeMembership.SelectedValue = value;
}
}
حال با کد زیر کموباکس را از دیتاگرید پر می کنم
frm.TypeMembershipBoardOfDirecotors = Convert.ToInt32(dgViewDirectorate.CurrentRow.Cells["TypeMembership_Fk"].Value);

که در این حالت Value=1 اما مقدار TypeMembershipBoardOfDirecotors برابر صفر نمایش داده می شود
کد من کجاش مورد دارد که مقدار TypeMembershipBoardOfDirecotors برابر Value ست نمی شود
باتشکر

Mahmoud.Afrad
پنج شنبه 15 مرداد 1394, 11:55 صبح
مطمئن شو سلول دیتاگرید مقدار داشته باشه (null نباشه)
به پراپرتی TypeMembershipBoardOfDirecotors مقدار عددی بده ببین عمل میکنه یا نه.
دیکشنری رو هم باید اصلاح کنی. value همون چیزی هست که باید نمایش داده بشه و key برای شناسایی و دسترسی هست.

public void SetComboBoxValue()
{
Dictionary<int, string> TypeMembership = new Dictionary<int, string>
{
{1, "موظف"},
{2, "غیرموظف"}
};
cboTypeMembership.DataSource = TypeMembership.ToList();
cboTypeMembership.DisplayMember = "value";
cboTypeMembership.ValueMember = "key";
}

Iran58
پنج شنبه 15 مرداد 1394, 12:59 عصر
باسلام

به پراپرتی TypeMembershipBoardOfDirecotors مقدار عددی بده ببین عمل میکنه یا نه.
مقدار دستی 2 دادم اما بازهم جواب 0 بود
در ضمن نوع داده در بانک هم int است

دیکشنری رو هم باید اصلاح کنی
چگونه باید اصلاح کنم
باتشکر

Mahmoud.Afrad
پنج شنبه 15 مرداد 1394, 13:02 عصر
توی پست قبلیم گذاشتم دیگه.

Iran58
پنج شنبه 15 مرداد 1394, 13:20 عصر
بازهم همان مقدار صفر را بر می گرداند

Iran58
شنبه 17 مرداد 1394, 11:57 صبح
سلام
مشکل حل شد
با قراردادن کدSetComboBoxValue()
در

public frmCompany()
{
SetComboBoxValue();
InitializeComponent();
}