2013-10-11 2 views
4

Я использую следующий код для грузоподъемного таблицы значений SQL в DataTableДобавление строки под конкретным столбцом в DataTable

 DataTable dt = new DataTable(); 
     SqlConnection con = new SqlConnection("Connection String Here"); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("select * from ExportExcel", con); 
     dt.Load(cmd.ExecuteReader()); 
     int total = 0; 
     foreach (DataRow row in dt.Rows) 
     { 
      int salaryvalue = Convert.ToInt32(row["Salary"]); 
      total = salaryvalue + total; 
     } 

     dt.Rows.Add("Salary"); 
     dt.Rows.Add(total); 

И я добавляю зарплату, общая dynamically.But Она показывает в первом столбце по одному.

enter image description here

Но мне нужна зарплата в колонке отдела, и общее в Зарплатный Column.How сделать это? enter image description here

ответ

4

вы можете использовать

 dt.rows.add(new object[]{"","Salary",total }); 

Вместо расчета Всего вы можете использовать Datatable.Compute Method

 object total; 
     total= dt.Compute("Sum(Salary)", ""); 
0

Вы должны написать, как это после цикла Еогеасп,

DataRow drNew=dt.NewRow(); 
drNew[0]=""; 
drNew[1]="Salary"; 
dtNew[2]=total; 
dt.Rows.Add(drNew); 

Надежда это помогает

0

Вы действительно хотите добавить только одну строку, поэтому просто добавьте одну строку.

dt.Rows.Add(string.Empty, "Salary", total); 
0

Информация ADO.NET, что вам нужно для этого можно найти на сайте MSDN: DataRow. Вы можете либо вычислить его в коде, как вы сделали, либо вставить функцию в документ excel.

DataRow row = dt.NewRow(); 

row["Name"] = "Salary"; 
row["Salary"] = total; 
dt.Rows.Add(row); 
+1

Хехе .. так смешно , или печально, что на вопросы, на которые можно легко ответить (смотря на msdn), всегда получается тонна ответов, а те, которые тяжело избегают, не дают от них никаких очков/мин ... – Mithon

0

Во-первых, не используйте * в запросе, который производит только неприятные ошибки в будущем. Назовите все ваши столбцы, которые вы хотите получить.

Вы должны добавить пустую строку для первого столбца:

// dt.Rows.Add("Salary"); <-- remove 
dt.Rows.Add("", "Salary", total); 

Кстати, вы также можете использовать следующий запрос, чтобы получить общее количество:

int total = dt.AsEnumerable.Sum(r => r.Field<int>("Salary")); 
Смежные вопросы