PDA

View Full Version : سوال: تعویض مقادیر گریدویو فقط برای کاربر



Yanehsar
جمعه 11 فروردین 1391, 15:48 عصر
سلام دوستان میخواستم بدونم چطور میشه مقادیر یه گرید ویو فقط برای نمایش تغییر داد؟؟
مثلا من برای جنسیت از بولین استفاده کردم اما میخوام وقتی کاربرم اطلاعات داخل گریدویو میبینه زن و مرد ببینه؟؟چیکار باید بکنم

Sirwan Afifi
جمعه 11 فروردین 1391, 16:07 عصر
دوست عزیز یه جدول دیگه برای جنسیت تعریف کن که شامل دو فیلد دباشه یکی ID از نوع bit و دیگری Name از نوع nvarchar بعد توی جدول اصلیت هم فیلد جنسیت رو bit بذار و Relation بین دو جدول رو مشخص کن. بعد با یه View ساده به جای نمایش True و یا False فیلد Name از جدول جنسیت رو نمایش بده. موفق Bind کردن به DataGridView هم از View سلکت بزن.
موفق باشی.

omid_csh
جمعه 11 فروردین 1391, 18:38 عصر
سلام
البته با Union هم میتونی query رو بنویسی
SELECT column1, column2, 'مرد' FROM Items WHERE sex = 0

UNION

SELECT column1, column2, 'زن' FROM Items WHERE sex = 1
موفق باشی

Yanehsar
جمعه 11 فروردین 1391, 19:24 عصر
ممنونم به جز ساختن جدول مجازی و جدول دوم کار دیگه ای نمیشه کرد؟؟؟؟؟حتما باید از داخل بانکمون جدول و Query بسازیم؟؟؟؟؟؟؟

faravaghi
جمعه 11 فروردین 1391, 23:10 عصر
سلام دوست عزیز،
SELECT
CASE Sex
WHEN '0' THEN 'مرد'
WHEN '1' THEN 'زن'
ELSE 'نامشخص'
END,
Name
FROM users

omid_csh
شنبه 12 فروردین 1391, 02:14 صبح
البته اگه بخوای توی سی شارپ اینکارو بکنی
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 = "زن";

}
}
برای این کار یه ستون باید اضافه کنی.
اگه بازم مشکلی داشتی بگو.

zayens
شنبه 12 فروردین 1391, 14:25 عصر
راحت ترین راه ممکن

این کد را بعد از نمایش گریدت قرار بده

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 = "مرد";
}

omid_csh
شنبه 12 فروردین 1391, 14:43 عصر
سلام

راحت ترین راه ممکن

این کد را بعد از نمایش گریدت قرار بده

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 بودنشو چک کنیم.
مشکل دیگه اینه که نباید کلیه سلول های دیتا گرید رو چک کنیم، فقط همون ستونی که باید مقایسه روش انجام بگیره.
موفق باشی

zayens
یک شنبه 13 فروردین 1391, 01:20 صبح
ستونی که datagridview برای نوع داده "bit" ایجاد میکنه از نوع CheckBox هستش، و برای مقایسه مقدارش باید true یا false بودنشو چک کنیم.
مشکل دیگه اینه که نباید کلیه سلول های دیتا گرید رو چک کنیم، فقط همون ستونی که باید مقایسه روش انجام بگیره.
موفق باشی
یعنی مثلا یکی از ستونهای دیتاگریدت چکباکس داره و مثلا اگر چکمارک بود یعنی مرد و اگر نبود یعنی زن؟

omid_csh
یک شنبه 13 فروردین 1391, 01:28 صبح
سلام

یعنی مثلا یکی از ستونهای دیتاگریدت چکباکس داره و مثلا اگر چکمارک بود یعنی مرد و اگر نبود یعنی زن؟
اگه دیتا گرید رو به یک منبع داده ای بایند کنید، آره، یه ستون از نوع چک باکس ایجاد میشه.
حالا بستگی به این داره که شما صفر یا یک رو برای مرد انتخاب کردین یا زن، موقع ورود اطلاعات.

zayens
یک شنبه 13 فروردین 1391, 02:35 صبح
سلام

اگه دیتا گرید رو به یک منبع داده ای بایند کنید، آره، یه ستون از نوع چک باکس ایجاد میشه.
حالا بستگی به این داره که شما صفر یا یک رو برای مرد انتخاب کردین یا زن، موقع ورود اطلاعات.

اولا امکان تغییر چکباکس به تکست باکس توی گرید امکان نداره
درواقع نمیشه 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");
}

دو تاعکس هم برای مثال گذاشتم که نحوه ی نمایش گرید را قبل از اجرای کد بالا و بعد از اجرای کد بالا نشون میده
اگر ابهامی هست بپرسید
8501785018

zayens
یک شنبه 13 فروردین 1391, 02:48 صبح
اگر جواب گرفتین با یه تشکر منو خبر کنین!

rahdar
یک شنبه 13 فروردین 1391, 18:31 عصر
یاد دلفی بخیر یه فیلد محاسباتی داشت خودش حساب می کرد.
ازین دردسرا نداشتیم
من وقتی ببینم دردسر زیاد داره و گریدها زیادن هردو فیلد رو در جدول میزارم
افزونگی داره اما دردسرش کمتره

zayens
سه شنبه 15 فروردین 1391, 13:58 عصر
یاد دلفی بخیر یه فیلد محاسباتی داشت خودش حساب می کرد.
ازین دردسرا نداشتیم
من وقتی ببینم دردسر زیاد داره و گریدها زیادن هردو فیلد رو در جدول میزارم
افزونگی داره اما دردسرش کمتره

افزونگی داره اما دردسرش کمتره!!!

جناب شما برگرد به همون دلفیتون که دردسرشم کمتره!

rahdar
چهارشنبه 16 فروردین 1391, 15:33 عصر
ببخشید
قرار دادن دو فیلد رو بیشتر برای تاریخ شمسی میلادی میکنم
برای جنسیت همون متن رو قرار میدم تا نوع منطقی
به نظر من که راحتتر میشه باهاش کار کرد
تو ویرایش و ورود فرم هم میشه از کومبو استفاده کرد


جناب شما برگرد به همون دلفیتون که دردسرشم کمتره!
عذر می خوام نمی دونستم نظر من به شما برمی خوره

hamed shahba
جمعه 15 اردیبهشت 1391, 00:32 صبح
سلام


ستونی که datagridview برای نوع داده "bit" ایجاد میکنه از نوع CheckBox هستش، و برای مقایسه مقدارش باید true یا false بودنشو چک کنیم.
مشکل دیگه اینه که نباید کلیه سلول های دیتا گرید رو چک کنیم، فقط همون ستونی که باید مقایسه روش انجام بگیره.
موفق باشی


86648
:متفکر: