تعویض مقادیر datagridview فقط برای کاربر
سلام دوستان میخواستم بدونم چطور میشه مقادیر یه گرید ویو فقط برای نمایش تغییر داد؟؟
مثلا من برای جنسیت از بولین استفاده کردم اما میخوام وقتی کاربرم اطلاعات داخل گریدویو میبینه زن و مرد ببینه؟؟چیکار باید بکنم
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
دوست عزیز یه جدول دیگه برای جنسیت تعریف کن که شامل دو فیلد دباشه یکی ID از نوع bit و دیگری Name از نوع nvarchar بعد توی جدول اصلیت هم فیلد جنسیت رو bit بذار و Relation بین دو جدول رو مشخص کن. بعد با یه View ساده به جای نمایش True و یا False فیلد Name از جدول جنسیت رو نمایش بده. موفق Bind کردن به DataGridView هم از View سلکت بزن.
موفق باشی.
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
سلام
البته با Union هم میتونی query رو بنویسی
SELECT column1, column2, 'مرد' FROM Items WHERE sex = 0
UNION
SELECT column1, column2, 'زن' FROM Items WHERE sex = 1
موفق باشی
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
ممنونم به جز ساختن جدول مجازی و جدول دوم کار دیگه ای نمیشه کرد؟؟؟؟؟حتما باید از داخل بانکمون جدول و Query بسازیم؟؟؟؟؟؟؟
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
سلام دوست عزیز،
SELECT
CASE Sex
WHEN '0' THEN 'مرد'
WHEN '1' THEN 'زن'
ELSE 'نامشخص'
END,
Name
FROM users
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
البته اگه بخوای توی سی شارپ اینکارو بکنی
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'newDataSet.Items' table. You can move, or remove it, as needed.
this.itemsTableAdapter.Fill(this.newDataSet.Items) ;
for (int i = 0; i < myDataGridView.RowCount; i++)
{
if (Convert.ToBoolean(myDataGridView.Rows[i].Cells[3].Value))
myDataGridView.Rows[i].Cells[4].Value = "مرد";
else
myDataGridView.Rows[i].Cells[4].Value = "زن";
}
}
برای این کار یه ستون باید اضافه کنی.
اگه بازم مشکلی داشتی بگو.
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
راحت ترین راه ممکن
این کد را بعد از نمایش گریدت قرار بده
for (int i = 0; i < grd1.Rows.Count; i++)
for (int j = 0; j < grd1.ColumnCount; j++)
{
if (grd1.Rows[i].Cells[j].Value.ToString() == "1")
grd1.Rows[i].Cells[j].Value = "زن";
else if (grd1.Rows[i].Cells[j].Value.ToString() == "0")
grd1.Rows[i].Cells[j].Value = "مرد";
}
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
سلام
نقل قول:
نوشته شده توسط
zayens
راحت ترین راه ممکن
این کد را بعد از نمایش گریدت قرار بده
for (int i = 0; i < grd1.Rows.Count; i++)
for (int j = 0; j < grd1.ColumnCount; j++)
{
if (grd1.Rows[i].Cells[j].Value.ToString() == "1")
grd1.Rows[i].Cells[j].Value = "زن";
else if (grd1.Rows[i].Cells[j].Value.ToString() == "0")
grd1.Rows[i].Cells[j].Value = "مرد";
}
ستونی که datagridview برای نوع داده "bit" ایجاد میکنه از نوع CheckBox هستش، و برای مقایسه مقدارش باید true یا false بودنشو چک کنیم.
مشکل دیگه اینه که نباید کلیه سلول های دیتا گرید رو چک کنیم، فقط همون ستونی که باید مقایسه روش انجام بگیره.
موفق باشی
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
نقل قول:
نوشته شده توسط
omid_csh
ستونی که datagridview برای نوع داده "bit" ایجاد میکنه از نوع CheckBox هستش، و برای مقایسه مقدارش باید true یا false بودنشو چک کنیم.
مشکل دیگه اینه که نباید کلیه سلول های دیتا گرید رو چک کنیم، فقط همون ستونی که باید مقایسه روش انجام بگیره.
موفق باشی
یعنی مثلا یکی از ستونهای دیتاگریدت چکباکس داره و مثلا اگر چکمارک بود یعنی مرد و اگر نبود یعنی زن؟
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
سلام
نقل قول:
نوشته شده توسط
zayens
یعنی مثلا یکی از ستونهای دیتاگریدت چکباکس داره و مثلا اگر چکمارک بود یعنی مرد و اگر نبود یعنی زن؟
اگه دیتا گرید رو به یک منبع داده ای بایند کنید، آره، یه ستون از نوع چک باکس ایجاد میشه.
حالا بستگی به این داره که شما صفر یا یک رو برای مرد انتخاب کردین یا زن، موقع ورود اطلاعات.
2 ضمیمه
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
نقل قول:
نوشته شده توسط
omid_csh
سلام
اگه دیتا گرید رو به یک منبع داده ای بایند کنید، آره، یه ستون از نوع چک باکس ایجاد میشه.
حالا بستگی به این داره که شما صفر یا یک رو برای مرد انتخاب کردین یا زن، موقع ورود اطلاعات.
اولا امکان تغییر چکباکس به تکست باکس توی گرید امکان نداره
درواقع نمیشه DatagridGridViewCheckBoxColumn را به Column Type دیگری تغییر داد
برای اینکار یه راه وجو داره
private void ShowDataGrid()
{
//اول یه ستون جدید باید ایجاد بشه
grd.Columns.Add("KINDcolumn", "جنسیت");
for (int i = 0; i < grd.Rows.Count; i++)
{
//...یعنی اگر چکباکس ستون "کایند" علامت داشت آنگاه
if (Convert.ToString(grd.Rows[i].Cells["KIND"].Value) == "true")
{
//آنگاه درستون جدیدیکه ساختیم(درهمان ردیف)"مرد"راجایگذاری کن
grd.Rows[i].Cells["KINDcolumn"].Value = "مرد";
}
else if (Convert.ToString(grd.Rows[i].Cells["KIND"].Value) == "false")
{
grd.Rows[i].Cells["KINDcolumn"].Value = "زن";
}
}
//درآخر ستونی که داخلش چکباکس داره باید حذف بشه
grd.Columns.Remove("KIND");
}
دو تاعکس هم برای مثال گذاشتم که نحوه ی نمایش گرید را قبل از اجرای کد بالا و بعد از اجرای کد بالا نشون میده
اگر ابهامی هست بپرسید
ضمیمه 85017ضمیمه 85018
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
اگر جواب گرفتین با یه تشکر منو خبر کنین!
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
یاد دلفی بخیر یه فیلد محاسباتی داشت خودش حساب می کرد.
ازین دردسرا نداشتیم
من وقتی ببینم دردسر زیاد داره و گریدها زیادن هردو فیلد رو در جدول میزارم
افزونگی داره اما دردسرش کمتره
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
نقل قول:
نوشته شده توسط
rahdar
یاد دلفی بخیر یه فیلد محاسباتی داشت خودش حساب می کرد.
ازین دردسرا نداشتیم
من وقتی ببینم دردسر زیاد داره و گریدها زیادن هردو فیلد رو در جدول میزارم
افزونگی داره اما دردسرش کمتره
افزونگی داره اما دردسرش کمتره!!!
جناب شما برگرد به همون دلفیتون که دردسرشم کمتره!
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
ببخشید
قرار دادن دو فیلد رو بیشتر برای تاریخ شمسی میلادی میکنم
برای جنسیت همون متن رو قرار میدم تا نوع منطقی
به نظر من که راحتتر میشه باهاش کار کرد
تو ویرایش و ورود فرم هم میشه از کومبو استفاده کرد
نقل قول:
جناب شما برگرد به همون دلفیتون که دردسرشم کمتره!
عذر می خوام نمی دونستم نظر من به شما برمی خوره
1 ضمیمه
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
نقل قول:
نوشته شده توسط
omid_csh
سلام
ستونی که datagridview برای نوع داده "bit" ایجاد میکنه از نوع CheckBox هستش، و برای مقایسه مقدارش باید true یا false بودنشو چک کنیم.
مشکل دیگه اینه که نباید کلیه سلول های دیتا گرید رو چک کنیم، فقط همون ستونی که باید مقایسه روش انجام بگیره.
موفق باشی
ضمیمه 86648
:متفکر:
نقل قول: تعویض مقادیر گریدویو فقط برای کاربر
نقل قول:
نوشته شده توسط
zayens
اولا امکان تغییر چکباکس به تکست باکس توی گرید امکان نداره
درواقع نمیشه DatagridGridViewCheckBoxColumn را به Column Type دیگری تغییر داد
برای اینکار یه راه وجو داره
private void ShowDataGrid()
{
//اول یه ستون جدید باید ایجاد بشه
grd.Columns.Add("KINDcolumn", "جنسیت");
for (int i = 0; i < grd.Rows.Count; i++)
{
//...یعنی اگر چکباکس ستون "کایند" علامت داشت آنگاه
if (Convert.ToString(grd.Rows[i].Cells["KIND"].Value) == "true")
{
//آنگاه درستون جدیدیکه ساختیم(درهمان ردیف)"مرد"راجایگذاری کن
grd.Rows[i].Cells["KINDcolumn"].Value = "مرد";
}
else if (Convert.ToString(grd.Rows[i].Cells["KIND"].Value) == "false")
{
grd.Rows[i].Cells["KINDcolumn"].Value = "زن";
}
}
//درآخر ستونی که داخلش چکباکس داره باید حذف بشه
grd.Columns.Remove("KIND");
}
دو تاعکس هم برای مثال گذاشتم که نحوه ی نمایش گرید را قبل از اجرای کد بالا و بعد از اجرای کد بالا نشون میده
اگر ابهامی هست بپرسید
ضمیمه 85017ضمیمه 85018
بسیار عالی ممنونم. فقط یک مشکلی برای من داشت که کد شمارو به اینت کانورتش کردم بجای استرینگ و بجای ترو فالس از صفرو یک استفاده کردم مشکلم برطرف شد...