PDA

View Full Version : سوال: عدم نمایش جمع یک ستون از دیتا گرید



امیر مهرشاد
سه شنبه 13 آبان 1393, 21:33 عصر
سلام دوستان با کد های زیر در یک پروژه دیگه راحت میتونم جمع یک ستون از گرید رو بدست بیارم ولی در یکی از پروژه هایی که الان مشغولم خطا میده احتیاج به راهنمایی دارم واقعا ضروریه



کد ها :




int sum = 0;


for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sum += int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());


}
label1.Text = sum.ToString();




متن خطا : Input string was not in a correct format.



125303

امیر مهرشاد
سه شنبه 13 آبان 1393, 21:38 عصر
ضمنا نمیدونم چرا مجموع یک ستون که در خود فایل اکسل آورده شده رو در گرید نشون نمیده اصل فایل اکسل تصویریه که براتون میزارم

125304

mahdi87_gh
چهارشنبه 14 آبان 1393, 11:52 صبح
دوست عزیز بنا به احتمال زیاد در ستون مجموع فرمول نوشته شده و اکسل جمع رو انجام میده و نمایش میده!! شما یه breakpoint بزار و ببین از فایل اکسل چی می خونه؟

fakhradin
چهارشنبه 14 آبان 1393, 12:32 عصر
با سلام مشکل شما در این کد مربوط می شه به ستون F5 چون 5 سلول اول دارای رشته ی Null می باشد و در این صورت وقتی روی اون عملیات تبدیل انجام می دی با یه استثنا روبرو می شی به نظر بنده به جای کد توی حلقه ی For این کد رو جاگذاری کن تا مشکلت رفع بشه


int i = 0;
if(int.TryParse(dataGridView1.Rows[i].Cells[4].Value.ToString(), out i))
{
sum += int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());
}

امیر مهرشاد
چهارشنبه 14 آبان 1393, 22:58 عصر
با سلام مشکل شما در این کد مربوط می شه به ستون F5 چون 5 سلول اول دارای رشته ی Null می باشد و در این صورت وقتی روی اون عملیات تبدیل انجام می دی با یه استثنا روبرو می شی به نظر بنده به جای کد توی حلقه ی For این کد رو جاگذاری کن تا مشکلت رفع بشه


int i = 0;
if(int.TryParse(dataGridView1.Rows[i].Cells[4].Value.ToString(), out i))
{
sum += int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());
}


با عرض تشکر از توجه همه دوستان کد شما رو هم تست کردم کلا میره توی کما ( not reponding ) :متفکر:

ولی به احتمال زیاد همون برخورد با NULL بودن چند سلول اوله راهی وجود نداره حتی اونا رو هم چک میکنم خروجی ندارم

hamid_hr
پنج شنبه 15 آبان 1393, 09:34 صبح
long tmp;
var x = (from q in MainDgv.Rows.Cast<DataGridViewRow>().AsEnumerable()
select long.TryParse((q.Cells[1].Value == null ? "" : q.Cells[1].Value.ToString()), out tmp) ? tmp : 0).Sum();



x میشه مقدار جمع

fakhradin
پنج شنبه 15 آبان 1393, 14:09 عصر
با عرض تشکر از توجه همه دوستان کد شما رو هم تست کردم کلا میره توی کما ( not reponding ) :متفکر:

ولی به احتمال زیاد همون برخورد با NULL بودن چند سلول اوله راهی وجود نداره حتی اونا رو هم چک میکنم خروجی ندارم

شرمنده کد رو به شکل زیر در بیار تا از سلول های NULL بگذزه

int i = 0;
if (dataGridView1.Rows[i].Cells[4].Value != NULL && dataGridView1.Rows[i].Cells[4].Value.ToString(), out i))
{
sum += int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());
}

امیر مهرشاد
جمعه 16 آبان 1393, 01:18 صبح
long tmp;
var x = (from q in MainDgv.Rows.Cast<DataGridViewRow>().AsEnumerable()
select long.TryParse((q.Cells[1].Value == null ? "" : q.Cells[1].Value.ToString()), out tmp) ? tmp : 0).Sum();



x میشه مقدار جمع


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