Как суммировать значения всех строк в столбце, который был сгенерирован динамически? - PullRequest
0 голосов
/ 23 января 2020

Доброе утро, коллеги-кодеры,

Я пытаюсь суммировать все значения в каждой строке указанного c столбца с именем SubTotal. Подытог необходимо суммировать с LineTotal каждой строки, но строки генерируются динамически и по событию нажатия кнопки. Я свяжу свой код ниже и снимок экрана, и, возможно, один из вас может помочь мне:

РЕДАКТИРОВАТЬ: - Я пробовал все «Решения» ниже, но каждый раз, когда я пытаюсь добавить это на свою страницу, это из-за того, что в моем PDF-файле нет страниц, я тоже попытался провести собственное исследование, но безрезультатно, потому что из-за этого у моего PDF-файла нет страниц

пробовал: -

(1)int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", string.Empty));

(2)DataTable dt= dataSet.Tables["YourTableName"];
object lineTotalInputSum ;
lineTotalInputSum = dt.Compute("Sum("YourColumnName")", string.Empty);

(3)var subTotal= rows.Sum(row => row.Field<double>("LineTotal"));

Я не говорю, что кто-то из вас не прав, я говорю, что я не уверен, как внедрить эти предложения в мой код и чтобы остальные работали, если бы вы могли дать мне простое объяснение, я сделаю все возможное, чтобы он работал не стесняйтесь просить любой дополнительный код, который я не предоставил

------ END EDIT --------

foreach (DataRow dataRow in dt.Rows)
{                     
    //Adding dt.Rows to Strings for Use in iTextSharp
    string lineNumberInput = dataRow[1].ToString();
    string itemCodeInput = dataRow[12].ToString();
    string itemNameInput = dataRow[13].ToString();
    string QtyInput = dataRow[14].ToString();
    string UnitPriceInput = dataRow[15].ToString();
    //string Discount = dt.Rows[0][""].ToString();
    string lineTotalInput = dataRow[16].ToString();
    string wasReturnedInput = dataRow[17].ToString();

    //Implementing strings in iTextSharp
    var Cell_LineNumberList = new PdfPCell(new 
    Phrase(lineNumberInput, tablefont));
    var Cell_ItemCodelist = new PdfPCell(new 
    Phrase(itemCodeInput, tablefont));
    var Cell_ItemNamelist = new PdfPCell(new 
    Phrase(itemNameInput, tablefont));
    var Cell_Qtylist = new PdfPCell(new Phrase(QtyInput, 
    tablefont));
    var Cell_UnitPricelist = new PdfPCell(new 
    Phrase(UnitPriceInput, tablefont));
    var Cell_Discountlist = new PdfPCell(new 
    Phrase("None", tablefont));
    var Cell_LineTotallist = new PdfPCell(new 
    Phrase(lineTotalInput, tablefont));
    var Cell_WasReturnedlist = new PdfPCell(new 
    Phrase(wasReturnedInput, tablefont));

    //Aligning all the cells
    Cell_LineNumberList.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_ItemCodelist.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_ItemNamelist.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_Qtylist.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_UnitPricelist.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_Discountlist.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_LineTotallist.HorizontalAlignment = 
    Element.ALIGN_CENTER;
    Cell_WasReturnedlist.HorizontalAlignment = 
    Element.ALIGN_CENTER;


    //adding the cells to the table
    t.AddCell(Cell_LineNumberList);
    t.AddCell(Cell_ItemCodelist);
    t.AddCell(Cell_ItemNamelist);
    t.AddCell(Cell_Qtylist);
    t.AddCell(Cell_UnitPricelist);
    t.AddCell(Cell_Discountlist);
    t.AddCell(Cell_LineTotallist);
    t.AddCell(Cell_WasReturnedlist);
}

Ниже вы найдете снимок экрана столбца, который я хочу суммировать красным и столбец значений (откуда взяты значения) зеленого цвета * все они генерируются динамически *

enter image description here

Если вы можете просто показать мне, как хранить его в переменной, тогда я могу взять его оттуда и заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Я не совсем уверен, как выглядит ваш DataTable, но вы используете метод Compute , чтобы получить сумму нужного столбца:

DataTable dt= dataSet.Tables["YourTableName"];
object lineTotalInputSum ;
lineTotalInputSum = dt.Compute("Sum("YourColumnName")", string.Empty);
0 голосов
/ 23 января 2020

Попробуйте использовать LINQ для столбца «Итого по строке» за пределами вашего foreach l oop следующим образом

var subTotal= rows.Sum(row => row.Field<double>("LineTotal"));

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

Надеюсь, это поможет!

...