PDA

View Full Version : سوال: Label



irrazor
سه شنبه 30 دی 1393, 09:23 صبح
سلام دوستان

من معدل رو با کد زیر میگیرم و در یک label نمایش میدم.مشکل من اینه که تعداد رقم اعشار زیادی نمایش میده.میخوام فقط تا 2 تا رقم اعشارو نمایش بده.باید چیکارکنم؟

فیلد average از نوع float هست.


void avg() {
SqlDataAdapter akoda = new SqlDataAdapter("select sum(Average)/sum([تعداد واحد]) as Average from [LessonS]", sc);
DataTable dt1 = new DataTable();
akoda.Fill(dt1);
Label5.Text = dt1.Rows[0][0].ToString();
}

ahmad156
سه شنبه 30 دی 1393, 10:35 صبح
decimalVar.ToString ("#.##");

irrazor
سه شنبه 30 دی 1393, 15:08 عصر
ممنون از کمک تون ولی من متوجه نشدم این کد رو کجا قرار بدم.

ایا در خاصیت لیبل یا اول همون کد؟

ahmad156
سه شنبه 30 دی 1393, 15:51 عصر
Label5.Text =(float.Parse(dt1.Rows[0][0].ToString())).ToString("#.##")

irrazor
سه شنبه 30 دی 1393, 18:45 عصر
خیلی ممنون مشکلم حل شد اما وقتی از شرط داخل select استفاده میکنم از کار میوفته و ارور زیر رو میده:

Input string was not in a correct format.

یک راه حل اگه میشه واسش پیدا کنید.

ahmad156
سه شنبه 30 دی 1393, 19:36 عصر
بابت تشکر،دکمه تشکر
خب چک کنین Query تون چی برمیگردونه.متن خطا هم که واضحه.(مقدار برگشتی عدد اعشاری نیست)

irrazor
سه شنبه 30 دی 1393, 19:49 عصر
از جدول LessonS که انتخاب واحد دانشجویان درش هست میاد مجموع تعداد واحد هارو تقسیم میکه بر میانگین نمرات دانشجوی مورد نظر.

قطعا رقم بازگشتی عدده و بعضی وقتا اعشاری میشه.



void avg()
{
SqlDataAdapter akoda2 = new SqlDataAdapter("select sum(Average)/sum([تعداد واحد]) as Average from [LessonS] where [ش.دانشجوی]='" + Session["user"] + "'", akoconnection);
DataTable akodt2 = new DataTable();
akoda2.Fill(akodt2);
Label5.Text = float.Parse(akodt2.Rows[0][0].ToString()).ToString("#.##");
}


وقتی شرط
where [ش.دانشجوی]='" + Session["user"] + " بهش اضافه کردم این ارور اومد قبله شرط درست کار میکرد!

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

ahmad156
سه شنبه 30 دی 1393, 19:59 عصر
خیر،تبدیل عدد غیراعشار به اعشار شدنی هست.

irrazor
سه شنبه 30 دی 1393, 20:04 عصر
ن نگرفتی منضور من رو.

اینجا بیام ی شرطی بزارم که اگه مقدار بازگشتی دراینجا:

Label6.Text = dt1.Rows[0][0].ToString();
اعشار بود بیاد لیبلو اینجور نمایش بده,اگه اعشار نبود به همونصورت نمایش بده.

irrazor
چهارشنبه 01 بهمن 1393, 22:40 عصر
دوشتان مشکلم حل شد با تکه کد زیر(ولی دهنم سرویس شد تا شد!):



if (Label5.Text.Length <=1)
{
Label5.Text = dt1.Rows[0][0].ToString();
}
if (Label5.Text.Length >= 2)
{
Label5.Text = (float.Parse(dt1.Rows[0][0].ToString()).ToString("##.##"));
}