PDA

View Full Version : مبتدی: عوض کردن رنگ گرید ویو در یک شرط خاص



piter11
یک شنبه 02 آذر 1393, 19:39 عصر
سلام چطور میشه وقتی یه نفر با یک کدیا شماره تلفن نوبت دهی می کنیم براش داخل گرید ویو اون سطرشونو با یه رنگ خاصی (به صورت تصادفی)مثلا آبی یا قرمز ...... نشون بدیم یعنی مثلا تو عکس زیر بیاد آیدی 48و47 که کد اشتراک 33 دارند رو سطرشونو با رنگ آبی نشون بده حالا مثلا با کد اشتراک 44 اگه چند تا بود بیاد با رنگ قرمز به همین صورت.... منظورم اینه دقیقا ,اگر مقدار چند فیلد(فیلد کد اشتراک) یکی بودن بیاد یا یه رنگ خاصی سطراشونو نمایش بده در دیتا گرید ویو اگه سوالم مبهم بگید تا بیشتر توضیح بدم

125977

piter11
یک شنبه 02 آذر 1393, 19:49 عصر
اگر هم به صورت تصادفی نمیشه رنگ ها رو عوض کرد حداقل با یک رنگ خاص نشون بدم

piter11
سه شنبه 04 آذر 1393, 18:02 عصر
خواهشا کمک هنوز منتظریم

hamid_hr
یک شنبه 09 آذر 1393, 11:26 صبح
DataGridViewCellStyle ds = new DataGridViewCellStyle();
ds.BackColor = Color.Red;
dataGridView1.Rows.Cast<DataGridViewRow>().AsEnumerable()
.Where(c => c.Cells[0].Value != null)
.Where(c => c.Cells[0].Value.ToString().Equals("44"))
.All(c => { c.DefaultCellStyle = ds; return true; });



من با سی شارپ بلد بودم نوشتم:گیج:

piter11
یک شنبه 09 آذر 1393, 11:44 صبح
ممنون ولی این شرط باید با فیلد تو بانک چک شه نه فقط فیلدی با مقدار مثلا44

hosseinbarnamenevis
دوشنبه 10 آذر 1393, 08:14 صبح
یه حلقه بسازین . فیلد مورد نظر رو پایش کنه. اگه شرط بر قرار بود تغییر بده. اگه نتونستین کدشو بنویسید بگید که بزارم

piter11
دوشنبه 10 آذر 1393, 10:14 صبح
میشه زحمتشو بکشید با سپاس

hosseinbarnamenevis
چهارشنبه 12 آذر 1393, 17:26 عصر
For i = 0 To dg.RowCount - 1
If dg.Rows(i).Cells(3).Value > 0 Then
dg.Rows(i).DefaultCellStyle.BackColor = Color.Firebrick
ElseIf dg.Rows(i).Cells(3).Value < 0 Then
dg.Rows(i).DefaultCellStyle.BackColor = Color.Khaki


End If
Next


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

piter11
پنج شنبه 13 آذر 1393, 11:48 صبح
داداش کدت درسته ولی شرطی که من میخوام بالاتر از 0 نیست! یعنی معلوم نیست بالا تر یا پایین تر از چند سلول سوم درست میشه همون کد اشتراک الان اجراش که میکنم برای همش شرط اول که گفتی if > value.0 بود رنگ سبز نشون میده, می خوام کد های اشتراک تکراری رو با رنگ خاص نشون بده نه بالاتر از مقدار خاصی مثلا دو تا 33 بود بیاد دو سطر آبی نشون بده ولی اگر یه سطر 33 بود مثلا قرمز نشون بده

reza9025
جمعه 14 آذر 1393, 10:58 صبح
سورس رو ضمیمه کردم.

اول روی دکمه ی Fetch Record کلیک کن بعدش هم color تا رکورد های تکراری همرنگ بشن.

piter11
جمعه 14 آذر 1393, 11:55 صبح
سورس رو ضمیمه کردم.

اول روی دکمه ی Fetch Record کلیک کن بعدش هم color تا رکورد های تکراری همرنگ بشن.

ممنون ولی نمیدونم واسه من چرا فقط واسه دو سطری که کد اشتراک 33 دارند اعمال میشه رنگ واسه 44 ها نمیشه!
126313

reza9025
جمعه 14 آذر 1393, 12:04 عصر
با چندین داده ی متفاوت تست کردم. :متفکر:چند بار اول راست می گید فقط اولی ها یا دومی را رنگی می کرد. باید به عرضتان برسونم که چون رنگ ها به صورت Random ایجاد میشوند گاهی اوقات رنگ رکورد های متفاوت بسیار به هم نزدیک هستند. چندین بار دکمه ی رنگی کردن رو فشار دهید تا رنگ های متفاوتی ایجاد شود. در غیر این صورت کدها رو به صورت کامل انتقال ندادی روی پروژه ی خودت یا در هنگام تبدیل آن ها به کد VB مواردی رو جا انداختی.

piter11
جمعه 14 آذر 1393, 12:06 عصر
با چندین داده ی متفاوت تست کردم. :متفکر:چند بار اول راست می گید فقط اولی ها یا دومی را رنگی می کرد. باید به عرضتان برسونم که چون رنگ ها به صورت Random ایجاد میشوند گاهی اوقات رنگ رکورد های متفاوت بسیار به هم نزدیک هستند. چندین بار دکمه ی رنگی کردن رو فشار دهید تا رنگ های متفاوتی ایجاد شود. در غیر این صورت کدها رو به صورت کامل انتقال ندادی روی پروژه ی خودت یا در هنگام تبدیل آن ها به کد VB مواردی رو جا انداختی.
من این کدو اعمال دادم با وی بی
Dim rnd As New Random()
For i As Integer = 0 To Dgv1.RowCount - 1
Dim num As String = Dgv1.Rows(i).Cells(3).Value.ToString()

Dim c As New Color()
c = Color.FromArgb(rnd.[Next](0, 255), rnd.[Next](0, 255), rnd.[Next](0, 255))
For b As Integer = 0 To Dgv1.RowCount - 1
Dim g As String = Dgv1.Rows(b).Cells(3).Value.ToString()
If g = num Then
Dgv1.Rows(b).DefaultCellStyle.BackColor = c
End If
Next
Next

که این سی شارپش بود شما نوشته بودید
Random rnd = new Random();
for (int i = 0; i < dataGridView1.RowCount; i++)
{
string num = dataGridView1.Rows[i].Cells[2].Value.ToString();

Color c = new Color();
c = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255));
for (int b = 0; b < dataGridView1.RowCount; b++)
{
string g=dataGridView1.Rows[b].Cells[2].Value.ToString();
if(g==num)
{
dataGridView1.Rows[b].DefaultCellStyle.BackColor = c;
}

}
}

reza9025
جمعه 14 آذر 1393, 13:34 عصر
والا با این که زیاد از VB.NET یادم نمونده ولی بنظرم کد های که نوشتید مشکلی ندارند. لطفا چندین بار این کد ها رو اجرا کنید.منظورم اینه در یک Button قرار بدید و چندین بار امتحان کنید. اگه درست نشد باید از استادهای مربوط به VB.NET سوال کنید.


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

reza9025
جمعه 14 آذر 1393, 14:06 عصر
اینو یه تستی بزن...


Dim rnd As New Random()
Dim i As Integer
For i = 0 To Dgv1.RowCount - 1

Dim num As String = Dgv1.Rows(i).Cells(3).Value.ToString()

Dim c As New Color()
c = Color.FromArgb(rnd.[Next](0, 255), rnd.[Next](0, 255), rnd.[Next](0, 255))
Dim b As Integer
For b = 0 To Dgv1.RowCount - 1

Dim g As String = Dgv1.Rows(b).Cells(3).Value.ToString()
If g = num Then
Dgv1.Rows(b).DefaultCellStyle.BackColor = c
End If
Next
Next

piter11
جمعه 14 آذر 1393, 16:17 عصر
نشد متاسفانه فقط اولین تکراری رو نشون میده با رنگ