با عرض سلام و خسته نباشید به اساتید سایت D:
یه برنامه حسابداری دارم می نویسم اما چند تا مشکل دارم
1- جدا کردن ستون مبلغ قابل پرداخت و مانده باز فاکتور توی دیتاگرید تلریک به صورت (1,000,000,000) راه حل اصولی به چه صورته؟
البته باید این نکته رو در نظر داشته باشیم که موقع فیلتر یا جستجو هم به صورت صحیح عمل کنه
تا حالا چند روش به صورت های زیر امتحان کردم ولی نتیجه نگرفتم :(
Data Tabel رو به صورت زیر تعریف کردم با روش Linq
001.png
var db = new linqDataContext();
var sell = (from a in db.Sell2s
where Convert.ToInt32(a.InvoiceDate.ToString().Replace("/", "")) >= Convert.ToInt32(lbl_date1.Text.ToString().Replace( "/", "")) && Convert.ToInt32(a.InvoiceDate.ToString().Replace("/", "")) <= Convert.ToInt32(lbl_date2.Text.ToString().Replace( "/", "")) && a.FiscalYearYear == "1399"
orderby a.InvoiceNo
select new
{
InvoiceNo = a.InvoiceNo,
InvoiceDate = a.InvoiceDate,
CustomerCode = a.CustomerCode,
CustomerName = a.CustomerName,
SalesmanCode = a.SalesmanCode,
SalesmanName = a.SalesmanName,
Comment = a.Comment,
PayableAmount = a.PayableAmount,
RemainAmount = a.RemainAmount,
AppUserName = a.AppUserName,
ModifiedDate = a.ModifiedDate
});
DataTable dt = new DataTable();
dt.Columns.Add("شماره فاکتور", typeof(int));
dt.Columns.Add("تاریخ فاکتور");
dt.Columns.Add("کد مشتری");
dt.Columns.Add("مشتری");
dt.Columns.Add("کد فروشنده");
dt.Columns.Add("فروشنده");
dt.Columns.Add("توضیحات");
dt.Columns.Add("مبلغ قابل پرداخت", typeof(int));
dt.Columns.Add("مانده باز فاکتور", typeof(int));
dt.Columns.Add("کاربر");
dt.Columns.Add("تاریخ تغییر");
foreach (var item in sell)
{
var row = dt.NewRow();
row[("شماره فاکتور")] = Convert.ToUInt64(item.InvoiceNo);
row[("تاریخ فاکتور")] = item.InvoiceDate;
row[("کد مشتری")] = item.CustomerCode;
row[("مشتری")] = item.CustomerName;
row[("کد فروشنده")] = item.SalesmanCode;
row[("فروشنده")] = item.SalesmanName;
row[("توضیحات")] = item.Comment;
row[("مبلغ قابل پرداخت")] = Convert.ToUInt64(item.PayableAmount);
if (item.RemainAmount.ToString() == "0.0000")
{
row[("مانده باز فاکتور")] = "0";
}
else
{
row[("مانده باز فاکتور")] = Convert.ToUInt64(item.RemainAmount);
}
row[("کاربر")] = item.AppUserName;
var m = item.ModifiedDate.ToString();
m = m.ToString().Substring(0, 19);
PersianCalendar p = new PersianCalendar();
DateTime dmiladi = new DateTime();
dmiladi = Convert.ToDateTime(m);
m = p.GetHour(dmiladi).ToString() + ":" + p.GetMinute(dmiladi).ToString() + ":" + p.GetSecond(dmiladi).ToString() + " - " + p.GetYear(dmiladi).ToString() + "/" + p.GetMonth(dmiladi).ToString() + "/" + p.GetDayOfMonth(dmiladi).ToString();
row[("تاریخ تغییر")] = m;
dt.Rows.Add(row);
}
radGridView1.DataSource = dt;
موقع تعریف سطر ها از FormatString به صورت زیر استفاده کنم
row[("مبلغ قابل پرداخت")] = Convert.ToUInt64(item.PayableAmount).ToString("##, ###")
که در این صورت چون نوع ستون int تعریف شده (به خاطر فیلتر های خاص : بزرگتر ، کوچکتر ، بزرگتر مساوی ، کوچکتر مساویکه فقط در صورتی فعال می شوند که نوع ستون int تعریف شده باشه ) خطا کامپایل میده
ارسال اعداد به textbox که اعداد رو به صورت سه رقم جدا میکنه بعد وارد کردن به جدول
#region Number Seperator
public string textWithcomma
{
get;
set;
}
public string textWithoutcomma
{
get;
set;
}
public string skipComma(string str)
{
string[] ss = null;
string strnew = "";
if (str == "")
{
strnew = "0";
}
else
{
ss = str.Split(',');
for (int i = 0; i < ss.Length; i++)
{
strnew += ss[i];
}
}
return strnew;
}
#endregion
private void txt_temp_TextChanged(object sender, EventArgs e)
{
if (txt_temp.Text == "")
{
txt_temp.Text = null;
textWithcomma = "0";
textWithoutcomma = "0";
}
else
{
if (txt_temp.Text != "")
{
double d = Convert.ToDouble(skipComma(txt_temp.Text));
txt_temp.Text = d.ToString("#,#", System.Globalization.CultureInfo.InvariantCulture) ;
textWithcomma = txt_temp.Text;
textWithoutcomma = skipComma(txt_temp.Text);
}
}
txt_temp.Select(txt_temp.Text.Length, 0);
}
txt_temp.Text = item.InvoiceDate.ToString();
row[("مبلغ قابل پرداخت")] = txt_temp.Text;
که در اینصورت هم خطا کامپایل میده اگه نوع ستون رو مشخص نکنم میاره اما موقع فیلتر
مثلا اگه بخوام فاکتور که مبلغ 6600000 ریال هست پیدا کنم باید دقیقا بنویسم 6,600,000 تا بیاد !
در کل یه چیزی مثل تصویر زیر می خوام توی تلریک (تصویر مربوط به کامپوننت GridEx هست )