سلام دوستان میخواستم بدونم چطور میشه مقادیر یه گرید ویو فقط برای نمایش تغییر داد؟؟
مثلا من برای جنسیت از بولین استفاده کردم اما میخوام وقتی کاربرم اطلاعات داخل گریدویو میبینه زن و مرد ببینه؟؟چیکار باید بکنم
سلام دوستان میخواستم بدونم چطور میشه مقادیر یه گرید ویو فقط برای نمایش تغییر داد؟؟
مثلا من برای جنسیت از بولین استفاده کردم اما میخوام وقتی کاربرم اطلاعات داخل گریدویو میبینه زن و مرد ببینه؟؟چیکار باید بکنم
دوست عزیز یه جدول دیگه برای جنسیت تعریف کن که شامل دو فیلد دباشه یکی 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 = "مرد";
}
اولا امکان تغییر چکباکس به تکست باکس توی گرید امکان نداره
درواقع نمیشه 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");
}
دو تاعکس هم برای مثال گذاشتم که نحوه ی نمایش گرید را قبل از اجرای کد بالا و بعد از اجرای کد بالا نشون میده
اگر ابهامی هست بپرسید
grd1.jpggrd2.jpg
اگر جواب گرفتین با یه تشکر منو خبر کنین!
یاد دلفی بخیر یه فیلد محاسباتی داشت خودش حساب می کرد.
ازین دردسرا نداشتیم
من وقتی ببینم دردسر زیاد داره و گریدها زیادن هردو فیلد رو در جدول میزارم
افزونگی داره اما دردسرش کمتره
ببخشید
قرار دادن دو فیلد رو بیشتر برای تاریخ شمسی میلادی میکنم
برای جنسیت همون متن رو قرار میدم تا نوع منطقی
به نظر من که راحتتر میشه باهاش کار کرد
تو ویرایش و ورود فرم هم میشه از کومبو استفاده کرد
عذر می خوام نمی دونستم نظر من به شما برمی خورهجناب شما برگرد به همون دلفیتون که دردسرشم کمتره!