как вычислить сумму столбцов gridview в .net
как посчитать сумму столбцов в сетке .нет.может ли один помочь
проверьте следующие учебные пособия:
http://msdn.microsoft.com/en-us/library/bb310552.aspx[^]
http://msdn.microsoft.com/en-us/library/ms972833.aspx[^]
Замените значения ячеек в соответствии с вашими требованиями.
((Label)GVDailyTimeSheet.FooterRow.Cells[3].FindControl("lblTotalHours")).Text = dt.Compute("sum(Hours)", "").ToString();
я показываю вам пример...это будет эссье
функции в JavaScript; вы просто измените имя элемента управления GridView
function CalculateTotals() { var gv = document.getElementById("<%= gvPO.ClientID %>"); var tb = gv.getElementsByTagName("input"); var lb = gv.getElementsByTagName("span"); var sub = 0; var total = 0; var indexQ = 1; var indexP = 0; var price = 0; var qty = 0; var totalQty = 0; var tbCount = tb.length / 2; for (var i = 0; i < tbCount; i++) { if (tb[i].type == "text") { ValidateNumber(tb[i + indexQ]); sub = parseFloat(tb[i + indexP].value) * parseFloat(tb[i + indexQ].value); if (isNaN(sub)) { lb[i].innerHTML = "0.00"; sub = 0; } else { lb[i].innerHTML = FormatToMoney(sub, " ", ",", "."); ; } if (isNaN(tb[i + indexQ].value) || tb[i + indexQ].value == "") { qty = 0; } else { qty = tb[i + indexQ].value; } totalQty += parseInt(qty); total += parseFloat(sub); indexQ++; indexP++; } } lb[lb.length - 2].innerHTML = totalQty; lb[lb.length -1].innerHTML = FormatToMoney(total, " ", ",", "."); }
<asp:GridView ID="gvPO" runat="server" AutoGenerateColumns="False" CellPadding="4" GridLines="None" ShowFooter="True" DataKeyNames="ITEMCODE" Width="776px" Height="167px" ForeColor="#333333" onrowdeleting="gvPO_RowDeleting" ondatabound="gvPO_DataBound" onprerender="gvPO_PreRender" onrowdatabound="gvPO_RowDataBound" > <FooterStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> <Columns> <asp:BoundField DataField="ITEMCODE" HeaderText="Item Code" SortExpression="ITEMCODE" /> <asp:BoundField DataField="ITEMDESCRIPTION" HeaderText="Description" SortExpression="ITEMDESCRIPTION" /> <asp:TemplateField HeaderText="Qty"> <ItemTemplate> <asp:Label ID="lblQty" runat="server" Text='<%# Eval("OPENINGQTY")%>' ></asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label ID="lblTotalqty" runat="server" Text="0"></asp:Label> </FooterTemplate> </asp:TemplateField> <asp:BoundField DataField="ITEMUNIT" HeaderText="UOM" SortExpression="ITEMUNIT" /> <asp:TemplateField HeaderText="Rate"> <ItemTemplate> <asp:Label ID="lblPrice" runat="server" Text='<%# Eval("PURCHASERATE")%>' ></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Value"> <ItemTemplate> <asp:Label ID="lbltotal" runat="server" Text='<%# Eval("SUBTOTAL")%>' ></asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label ID="lblSubtotal" runat="server" Text="0.00"></asp:Label> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="VAT %"> <ItemTemplate> <asp:Label ID="lblVATpercentage" runat="server" Text='<%# Eval("VatPercentage")%>' ></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="VAT Total"> <ItemTemplate> <asp:Label ID="lblVATtotal" runat="server" Text='<%# Eval("VatTotal")%>' ></asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label ID="lblVATtotal" runat="server" Text="0.00"></asp:Label> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Total Amount"> <ItemTemplate> <asp:Label ID="lbltotalAmount" runat="server" Text='<%# Eval("TotalAmount")%>' ></asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label ID="lbltotalAmount" runat="server" Text="0.00"></asp:Label> </FooterTemplate> </asp:TemplateField> <asp:TemplateField > <ItemTemplate> <asp:LinkButton ID="LinkButton1" CommandArgument='<%# Eval("ITEMCODE") %>' CommandName="Delete" runat="server" OnClientClick="javascript:return confirm('Do you really want to \ndelete the item?');"> Delete</asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> <RowStyle CssClass="RowStyle" /> <PagerStyle CssClass="PagerStyle" /> <SelectedRowStyle CssClass="SelectedRowStyle" /> <HeaderStyle CssClass="HeaderStyle" /> <EditRowStyle CssClass="EditRowStyle" /> <AlternatingRowStyle CssClass="AltRowStyle" /> </asp:GridView>
Best Answer - SINGLE LINE <asp:TemplateField HeaderText="Net Amt"> <ItemTemplate> <%# (Eval("itm_or_fee_amt")==DBNull.Value?0:Convert.ToDouble(Eval("itm_or_fee_amt")))+(Eval("late_fee")==DBNull.Value?0:Convert.ToDouble(Eval("late_fee"))) %> </ItemTemplate> </asp:TemplateField>
Вряд ли это лучший ответ, так как он нечитабелен и запаздывает на 4 года
Привет,
На стороне сервера или клиента
Если это на стороне сервера проверьте это один раз
int sm=0; foreach(GridRow gr in GridView1.Rows) { sm+=int.parse(gr[coumnindex].Text);//if it has only text sm+=int.parse(((Control)gr[columnindex].findcontrol("controlid")).Text); }
всем привет,
Это хорошо, но это не дает общего значения столбцов.
Эй, не обращай внимания на мой первый комментарий.
теперь он прекрасно работает для меня. я сделал очень небольшое изменение в вашем коде, и вы знаете, что теперь это дает идеальный результат.
спасибо
Привет Рависонайя,
Дайте мне знать какие изменения необходимо сделать чтобы сделать его идеальным я обновлю свое решение
Чтобы вычислить сумму столбца в таблице данных, используйте DataTable Compute[^]метод.
Пример использования из связанной статьи MSDN:
DataTable table; table = dataSet.Tables["YourTableName"]; // Declare an object variable. object sumObject; sumObject = table.Compute("Sum(Amount)", "");
labelTotalAmount.Text = sumObject.ToString();
public string GetGross() { decimal Gross = 0; if (dgvItem.Rows.Count > 0) { for (int i = 0; i < dgvItem.Rows.Count; i++) { Gross = Gross + Convert.ToDecimal(((Label)dgvItem.Rows[i].FindControl("lblAmount")).Text.ToString()); } } return Gross.ToString(); }
public decimal ff_Calculate_Tot() { decimal ldec_grd_tot = 0; if (grd_rev_dtls.Rows.Count > 0) { if (ff_check() == true) { for (int i = 0; i < grd_rev_dtls.Rows.Count; i++) { decimal ld_tot = 0; bool isChecked_Short; GridViewRow row = grd_rev_dtls.Rows[i]; if (isChecked_Short = ((CheckBox)row.FindControl("chk_pay")).Checked) { ld_tot = Convert.ToDecimal(((TextBox)row.FindControl("txt_earn")).Text); } ldec_grd_tot = ldec_grd_tot + ld_tot; } } } return ldec_grd_tot; } }
<asp:TextBox ID="txt_earn" runat="server" Text='<%# Eval("amount") %>'></asp:TextBox>
Вопрос был задан и на него был дан ответ более 4 лет назад. Даже если вы не заметили дату, тот факт, что уже было 8 решений, должен был подсказать вам, что публиковать это было бессмысленно
я не заметил даты ... я пишу здесь не для того, чтобы получить очки...
Под " бессмысленным "я подразумевал" не стоящее усилий", " бессмысленное"
попробуй так..
decimal a=0, b=0, c=0; for (int i = 0; i < (gridview1.Rows.Count); i++) { a = Convert.ToDecimal(gridview1.Rows[i].Cells["Column Index"].Text.ToString()); c = c + a; //storing total qty into variable }
мой голос 5
спасибо
спасибо!