ورود

View Full Version : سوال: نحوه قرار دادن جمع یک ستون در footer گرید؟؟



hamed_kaveyani
شنبه 03 مهر 1389, 06:22 صبح
سلام . چگونه میتوانم مجموع مقادیر یک ستون گرید را بدست بیاورم و در footer آن قرار دهم.
راستش دو هفته میشه وقتم را گرفته. اگه خیلی مبتدی هم هست لطفا راهنمایی بفرمایید متشکرم.
میخواهم در فوتر زیر ستون اول بنویسم " مجموع " و زیر ستونهای عددی مجموع آن را بیارم.

MJ_PC88
شنبه 03 مهر 1389, 10:27 صبح
شما باید برای اینکار از توابع sql استفاده کنی
به ازای هر مجموع، یک تابع Scalar مثل Select sum(Price) تعریف می کنی، بعد table بندی رو طوری انجام میدی که لیبل حاصلجمع مربوط به هر ستون زیر همون ستون قرار بگیره، حالا هر لیبل رو به تابع جمع مورد نظرش بایند میکنی
فقط یادت باشه موقع Select اولیه علاوه بر فیلدهات باید اون توابع رو هم Select کنی:
Select id, Price,dbo.fu_Sum(Id) Where Id=7

hamed_kaveyani
شنبه 03 مهر 1389, 10:36 صبح
من با تابع زیر مشکل را حل کردم. فقط حالا یه مشکل دیگه داره : در فوتر همه صفحات گرید مجموع را قرار میده ولی من میخوام فقط در فوتر صفحه آخر این کار را بکنه

تابع مورد نظر:


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// check row type
if (e.Row.RowType == DataControlRowType.DataRow)
// if row type is DataRow, add ProductSales value to TotalSales
TotalSales += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "ProductSales"));
else if (e.Row.RowType == DataControlRowType.Footer)
// If row type is footer, show calculated total value
// Since this example uses sales in dollars, I formatted output as currency
e.Row.Cells[1].Text = String.Format("{0:c}", TotalSales);
}

hamed_kaveyani
شنبه 03 مهر 1389, 12:41 عصر
یه مشکل دیگه هم هست. حالا که از این تابع استفاده کردم اگه گرید بیش از یک صفحه داشته باشه تعداد صفحات 2 برابر میشه یعنی همه رکوردها یکبار دیگه تکرار میشن.
لطفا راهنمایی کنید.

karim orooji
شنبه 03 مهر 1389, 18:51 عصر
با سلام به دوست گرامی
ببین این برنامه کمکت میکنه

موفق باشی

hamed_kaveyani
یک شنبه 04 مهر 1389, 07:11 صبح
دوست عزیزم آقای عروجی( اگر اشتباه املایی داره ببخشید) بسیار متشکرم.
اشتباهم را میگم تا دوستان دیگه استفاده کنند. من وقتی کد آقای عروجی را دیدم فهمیدم که دیتاست را در رویداد PageIndexChanging و همچنین در Page_Load اصلا clear نکردم و این باعث میشد رکوردهام تکرار بشن و کلا کد درست کار نمیکرد.
حتما کد آقای عروجی را به دقت بررسی کنید.
زنده باد سایت برنامه نویس و همه دوستان گلم که به همدیگه کمک میکنن. :تشویق: :تشویق: :تشویق: