PDA

View Full Version : جمع زدن یک ستون از GridView



Hossein Bazyan
دوشنبه 16 مهر 1386, 13:41 عصر
سلام
من میخوام حاصل جمع یک ستون از GridView را به دست آورده و در Gridview نمایش دهم

مثلا ما در بانک نام و قیمت انواع میوه را داریم . میخواهیم در گریدویو آنها را نمایش دهیم .
میخوام مثلا در مورد خیار ، نام خیار در یک ستون و مقدار موجودی آن در ردیف بعدی نمایش داده شود.
در ضمن من از Wizard استفاده کرده ام
مرسی

Nightbat
دوشنبه 16 مهر 1386, 15:37 عصر
باید ستون فوق رو TEmplateField کنی، بعد تو RowDataBound مقدار کنترلی رو که توش عددت رو نشون می ده (مثلا label) بگیری. (مثلا FindControl(Label)) و در یک متغیر جمع کنی

Nightbat
دوشنبه 16 مهر 1386, 15:45 عصر
protected int Sum = 0;
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.DataItem != null) {
Sum += Convert.ToInt32(((Label)e.Row.FindControl("YourLabelName")).Text);
}
}

دیدم خیلی بد توضیح دادم گفتم کدش رو بنویسم :P

Hossein Bazyan
دوشنبه 16 مهر 1386, 17:22 عصر
سلام
دست شما درد نکنه اما کاش شیوه Tempalte کردنش را هم مینوشتی . راستش من هنوز با ویزاردها کار میکنم . شما یک مثال از Tempalte کردن بزار شاید فرجی شد ما هم به کد نویسی روی آوردیم.
مرسی

Nightbat
دوشنبه 16 مهر 1386, 17:53 عصر
گرید را انتخاب می کنی، از تو SmartTag ، لینک Edit Columns رو می زنی، بعد هر فیلدی که خواستی انتخاب می کنی، زیر پنجره سمت راست ( TemplateField Properties ) یه لینک به نام Convert This Field into TemplateField هست که کارت رو راه میندازه.

Hossein Bazyan
دوشنبه 16 مهر 1386, 23:20 عصر
سلام
اینکار را کردم و کد زیر به گرید اضافه شد. حال برای جمع زدن این ستون چکار باید بکنم ؟

<asp:TemplateFieldHeaderText="TotalTime"SortExpression="TotalTime">
<EditItemTemplate>
<asp:TextBoxID="TextBox1"runat="server"Text='<%# Bind("TotalTime") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:LabelID="Label1"runat="server"Text='<%# Bind("TotalTime", "{0:HH:mm:ss}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

federrer
دوشنبه 16 مهر 1386, 23:43 عصر
snmnightbat عزیز

مقدار Sum رو تو Footer همون ستون میخوایم نشون بدیم ، کدش رو می نویسی ؟؟؟

Nightbat
سه شنبه 17 مهر 1386, 12:24 عصر
اسم لیبل رو از Label1 عوض کن، یه اسمه معنی دار بذار، بعد تو رویداد RowDataBound گریدت همون کدی که نوشتم رو بذار.

Nightbat
سه شنبه 17 مهر 1386, 12:25 عصر
اینکه زمانه دوست من، جمع زمان داستانش فرق می کنه، همینطوری نمی تونی جمع بزنی. فرمت زمانی که نگه می داری تو بانک چیه ؟ DateTime ه ؟

Hossein Bazyan
سه شنبه 17 مهر 1386, 12:44 عصر
اینکه زمانه دوست من، جمع زمان داستانش فرق می کنه، همینطوری نمی تونی جمع بزنی. فرمت زمانی که نگه می داری تو بانک چیه ؟ DateTime ه ؟
سلام
اره زمانه و فرمت هم DateTime . خود WVD زمانا را با هم جمع میزنه فکر نکنم مشکلی باشه . من دو زمان را از هم کم کردم و مشکلی نشد در ضمن معادل دستوری که نوشتی در VB چیه ؟

Nightbat
سه شنبه 17 مهر 1386, 12:52 عصر
باید Sum رو از نوع TimeSpan تعریف کنی.

federrer
سه شنبه 17 مهر 1386, 13:41 عصر
اسم لیبل رو از Label1 عوض کن، یه اسمه معنی دار بذار، بعد تو رویداد RowDataBound گریدت همون کدی که نوشتم رو بذار.

مهندس جون . تو Page_load گرید ویو رو بایند می کنم . اطلاعات مورد نظرم رو هم استخراج می کنم . ولی خبری از Sum نیست . چه جوری متغیر Sum رو تو Gridview نشون میدی ؟؟؟؟؟؟؟ تو جایی نریختیمش !!!!

اینم کد من که عین کد شماست


protectedint Sum = 0;
protectedvoid GV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{
Sum += Convert.ToInt32(((Label)e.Row.FindControl("L1")).Text);
}
}


اینم کد گرید ویوی من



<asp:GridViewID="GV"runat="server"Height="121px"
Width="80px"ShowFooter="True">
<Columns>
<asp:TemplateFieldHeaderText="شناسه ">
<ItemStyleHorizontalAlign="Center"/>
<HeaderStyleHorizontalAlign="Center"/>
<ItemTemplate>
<%# Eval("ID")%>
</ItemTemplate>
<FooterStyleHorizontalAlign="Center"/>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="حقوق">
<ItemTemplate>
<asp:LabelID="L1"runat="server"Text='<%# Bind("salary") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Hossein Bazyan
سه شنبه 17 مهر 1386, 13:58 عصر
سلام

خواهشا معادل کد را در وی بی بنویسید.

ali_reza_nazari
دوشنبه 30 مهر 1386, 22:57 عصر
وی بی که راحت تره
نمیشه با وی بی هم بنویسید
ممنون