• 1397/07/20

نمایش مبلغ خوانده شده از بانک با جداکننده سه رقمی در گریدویو :

به نام خدا

با سلام و تشکر از همه دوستان

یه گریدویو دارم که میخوام یه مبلغی رو سه رقم سه رقم جدا کنه و نمایش بده، کد زیر رو ببینید لطفا:

private void RefreshSeason(string filter = null)
        {
            Grid_Season.AutoGenerateColumns = false;
            //int a = 25000;
            if (string.IsNullOrEmpty(filter))// حالت بدون فیلتر
            {
                Grid_Season.DataSource = (from s in db.Seasons
                                          orderby s.StartDate descending
                                          select new
                                          {
                                              s.ID,
                                              s.Title,
                                              StartDate = ((DateTime?)s.StartDate).persianDate(),
                                              EndDate = ((DateTime?)s.EndDate).persianDate(),
                                              s.DefaultWorkDays,
                                              //TotalReward = Convert.ToInt64(s.TotalReward).ToString("N0"),
                                              //TotalReward = Convert.ToInt64(s.TotalReward).ToString("#,0"),
                                              //TotalReward = (Convert.ToInt64(s.TotalReward)).ToString("#,#"),
                                              //TotalReward = (decimal.Parse(s.TotalReward)).ToString("N0"),
                                              //TotalReward = a.ToString("#,0"),
                                              TotalReward = s.TotalReward,
                                              s.IsActive,
                                              s.IsFreezed,
                                              s.Comment
                                          });
            }
            else
            {
                Grid_Season.DataSource = (from s in db.Seasons
                                          orderby s.StartDate descending
                                          where s.Title.Contains(ch.Change(filter.Trim()))
                                          select new
                                          {
                                              s.ID,
                                              s.Title,
                                              StartDate = ((DateTime?)s.StartDate).persianDate(),
                                              EndDate = ((DateTime?)s.EndDate).persianDate(),
                                              s.DefaultWorkDays,
                                              TotalReward = s.TotalReward,
                                              s.IsActive,
                                              s.IsFreezed,
                                              s.Comment
                                          });
            }
        }

با تشکر مجدد از جناب مدائنی بابت آموزش عالی سی شارپ، 

توی بانک فرمت ستون TotalReward از نوع float هست. تمام حالت هایی که جستجو کردم رو امتحان کردم اما اصلا گرید پر نمیشه (مهم ترین روش هایی که امتحان کردم و نتیجه نداد رو کامنت کردم و آخری که کامنت نشده اصلی هست که جواب میده ولی سه رقم سه رقم جدا نشون نمیده)

چند نکته برای روشن شدن بیشتر مسئله:

1- علت کانورت به Int64 این بوده که اعداد چند ده میلیاردی هست

2- اون int a = 25000 رو امتحان کردم و جواب داد اما وقتی مقداری رو از توی بانک میخونه بدون این که خطا بده! کلا انگار بیخیال ما میشه):

3- این متد رو توی رویداد Load فرم به شکل زیر فراخوانی کردم:

private void Frm_Mng_Season_Load(object sender, EventArgs e)
        {
            RefreshSeason();
        }

بازم تکرار میکنم ببخشید، اون حالت آخری که از هیچ Formatting Type ای برای TotalReward استفاده نشده (و الان کامنت نیست) بدون هیچ مشکلی داره کار میکنه

پیشاپیش از وقتی که میگذارید و کمکتون تشکر می کنم.

 

  • 1397/07/20
  • ساعت 09:14

سلام

برای گرید ویو هم باید برید توی تنظیمات مربوط به اون ستون بعد قسمت فرمت این کد رو وارد کنید

#,#

 


  • 1397/07/20
  • ساعت 11:36

خیلی خیلی ممنون

مشکلم حل شد، فقط اگر اینو هم بهم یاد بدین که توی اون بلاک LINQ چرا وقتی اون کدهای کامنت شده رو میزنم اصلا به کل همه متد رو انگار نادیده میگیره هم بر من منت دوچندان دارین.

بازم متشکر


  • 1397/07/20
  • ساعت 21:05

در بدنه دستورات linq نمیتونید convert کنید


  • 1399/08/17
  • ساعت 03:55

البته اگر عدد صفر داخل سلول دیتا گرید باشه با این کد #,# سلول رو خالی نشون میده  و باید 0,# رو در قسمت فرمت بنویسید تا صفر نمایش داده بشه و از طریق کد نویسی هم به این صورته

datagrid_1.Columns["numb"].DefaultCellStyle.Format = ("#,0");

logo-samandehi