yerrojumeher Ответов: 9

как вычислить сумму столбцов gridview в .net


как посчитать сумму столбцов в сетке .нет.может ли один помочь

9 Ответов

Рейтинг:
2

Om Prakash Pant

проверьте следующие учебные пособия:

http://msdn.microsoft.com/en-us/library/bb310552.aspx[^]

http://msdn.microsoft.com/en-us/library/ms972833.aspx[^]


Рейтинг:
2

Mohd Wasif

Замените значения ячеек в соответствии с вашими требованиями.

((Label)GVDailyTimeSheet.FooterRow.Cells[3].FindControl("lblTotalHours")).Text = dt.Compute("sum(Hours)", "").ToString();


Рейтинг:
2

sathish.parthiban

я показываю вам пример...это будет эссье

функции в 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>



protected void gvPO_RowDataBound(отправитель объекта, GridViewRowEventArgs e)
{
пробовать
{
если (электронная.Подряд.RowType ==DataControlRowType.EmptyDataRow)
{
grdTotal = 0;
grdQty = 0;
grdVat = 0;
grdAmount = 0;
}
если (электронная.Подряд.RowType == DataControlRowType.Строкаданных)
{

int Qty = конвертировать.ToInt32(DataBinder.Ивала(электронная.Подряд.Элемента данных, "OPENINGQTY"));
десятичный промежуточный итог = преобразовать.ToDecimal(DataBinder.Ивала(электронная.Подряд.Элемента данных, "Итого по"));
десятичный НДС = конвертировать.ToDecimal(DataBinder.Ивала(электронная.Подряд.Элемента Данных, "VatTotal"));
decimal TotalAmount = конвертировать.ToDecimal(DataBinder. Eval(e. Row. DataItem, " TotalAmount"));

grdQty = grdQty + кол-во;
grdTotal = grdTotal + Итого;
grdVat = grdVat + НДС;
grdAmount = grdAmount + TotalAmount;


}

если (электронная.Подряд.RowType == DataControlRowType.Нижний колонтитул)
{

Метки ЛБЛ = (лейбл)Эл.Подряд.FindControl("lblTotalqty");
ЛБЛ.Текст = grdQty.Метод toString();


Label lb2 = (Label)e. Row.FindControl("lblSubtotal");
lb2.Текст = grdTotal.Метод toString();

Label lb3 = (Label)e. Row.FindControl("lblVATtotal");
lb3.Текст = грдват.Метод toString();

Label lb4 = (Label)e. Row.FindControl("lbltotalAmount");
lb4.Текст = grdAmount.Метод toString();


txtTotal.Текст = grdAmount.Метод toString();
total = ConvertToINR (txtTotal.Text).Метод toString();
txtAmountInWords.Текст = всего.Метод toString();
}
}
catch (исключение)
{
// Ответ.Писать ("в<язык скриптов='JavaScript-код в'>предупреждение('таблица данных имеет значение null...');</скрипт&ГТ;");

}
}

надеюсь, теперь ты сможешь это сделать.... Все самое лучшее......


Рейтинг:
2

Member 10974289

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>


CHill60

Вряд ли это лучший ответ, так как он нечитабелен и запаздывает на 4 года

Рейтинг:
1

Muralikrishna8811

Привет,

На стороне сервера или клиента

Если это на стороне сервера проверьте это один раз

 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);
}


Это просто для идеи

всего наилучшего


ravisonaiya

всем привет,
Это хорошо, но это не дает общего значения столбцов.

ravisonaiya

Эй, не обращай внимания на мой первый комментарий.
теперь он прекрасно работает для меня. я сделал очень небольшое изменение в вашем коде, и вы знаете, что теперь это дает идеальный результат.
спасибо

Muralikrishna8811

Привет Рависонайя,
Дайте мне знать какие изменения необходимо сделать чтобы сделать его идеальным я обновлю свое решение

Рейтинг:
1

Jαved

Чтобы вычислить сумму столбца в таблице данных, используйте DataTable Compute[^]метод.

Пример использования из связанной статьи MSDN:

DataTable table;
table = dataSet.Tables["YourTableName"];

// Declare an object variable.
object sumObject;
sumObject = table.Compute("Sum(Amount)", "");

Отобразите результат в метке общей суммы следующим образом:
labelTotalAmount.Text = sumObject.ToString();


Рейтинг:
1

CoderVivs

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();
        }


Рейтинг:
1

Jiyaji_

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;
           }

       }



txt_earn-это текстовое поле в gridview

<asp:TextBox ID="txt_earn" runat="server" Text='<%# Eval("amount") %>'></asp:TextBox>


CHill60

Вопрос был задан и на него был дан ответ более 4 лет назад. Даже если вы не заметили дату, тот факт, что уже было 8 решений, должен был подсказать вам, что публиковать это было бессмысленно

Jiyaji_

я не заметил даты ... я пишу здесь не для того, чтобы получить очки...

CHill60

Под " бессмысленным "я подразумевал" не стоящее усилий", " бессмысленное"

Рейтинг:
0

Dev.Vikas.S

попробуй так..

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 
}


Для получения дополнительной информации.. вы можете посетить ссылку ниже...

http://midotnetexp.blogspot.in/#!/2012/06/how-to-calculate-sum-of-gridview.html[^]


надеюсь, это поможет вам..


raj ch

мой голос 5

Dev.Vikas.S

спасибо

lighthousekeeper

спасибо!