PDA

View Full Version : مبتدی: بدست آوردن مجموع یک ستون grid view



sevenboys
جمعه 17 تیر 1390, 14:22 عصر
با سلام و خسته نباشید چکونه میتوانم مجموع یک ستون grid view را در یک لیبل نمایش بدم؟؟

rasulp
جمعه 17 تیر 1390, 15:11 عصر
اینجا رو یه نگاه بنداز : http://www.asp.net/data-access/tutorials/displaying-summary-information-in-the-gridview-s-footer-vb
این هم یه مثال آنلاینه روی view Source کلیک کن تا کدش رو ببینی http://authors.aspalliance.com/aspxtreme/sys/web/ui/webcontrols/demos/gridviewrowcreatedrowdatabound.aspx

sevenboys
یک شنبه 19 تیر 1390, 13:04 عصر
اینجا رو یه نگاه بنداز : http://www.asp.net/data-access/tutorials/displaying-summary-information-in-the-gridview-s-footer-vb
این هم یه مثال آنلاینه روی view Source کلیک کن تا کدش رو ببینی http://authors.aspalliance.com/aspxtreme/sys/web/ui/webcontrols/demos/gridviewrowcreatedrowdatabound.aspx
lمیشه خودتون توضیح بدید من خوندم اما متوجه نشدم

rasulp
یک شنبه 19 تیر 1390, 21:47 عصر
نمیدونم چند وقته شروع کردی ولی مثال ها ساده بود:
فکر کن یه جدول داری به اسم Grade شامل سه تا فیلد ID ، Sname، Nomre پس یه Gridview داریم این شکلی:


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" >
<Columns>
<asp:BoundField DataField="SName" HeaderText="نام دانشجو" SortExpression="SName" />
<asp:TemplateField HeaderText="نمره" >
<ItemTemplate>
<asp:Label ID="lablNomre" runat="server" Text='<%# Eval("Nomre").ToString()%>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblTotal" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

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

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.Provid erName %>"
SelectCommand="SELECT [ID], [SName], [Nomre] FROM [Grade]">
</asp:SqlDataSource>
دو تا Label هم میذاریم یکی برای مجموع نمرات یکی هم برای معدل نمرات:

<asp:Label ID="Labeltotal" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Average" runat="server" Text="Label"></asp:Label>
حالا میریم تو قسمت کد مون:
اول از همه دو تا متغیر تعریف می کنیم یکی برای حمع کردن نمرات و یکی هم برای تعداد نمره ها،
دوم اینکه Gridview یه رویداد (Event) داره به نام RowDataBound که این رویداد برای سطر های گرید ویو یعنی Header، Data و Footer اجرا میشه و قبل از اینکه جدول تولید شده به سمت کاربر بره و روی مرورگرش نمایش داده بشه این اتفاق میفته پس برای اینکه مجموع سطرها رو داشته باشیم هر بار که سطری تولید میشه ما مقدار فیلد رو به متغیر هامون اضافه میکنیم و در آخر هم اون رو به Label نهایی منتسب می کنیم:
Dim grdTotal As Decimal = 0
Dim tedad As Integer = 0

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim rowTotal As Decimal = DataBinder.Eval(e.Row.DataItem, "Nomre")
grdTotal = grdTotal + rowTotal
tedad += 1

End If
If e.Row.RowType = DataControlRowType.Footer Then
Labeltotal.Text = grdTotal.ToString()
Average.text = grdTotal / tedad
End If
End Sub

rasulp
یک شنبه 19 تیر 1390, 22:09 عصر
اینم نمونه ساده