在gridview中加载的sum值

时间:2014-01-03 18:39:27

标签: c# asp.net

如何在C#asp.net应用程序中加上gridview的一个选定行的所有值? 例如,我有一个gridview,其中只有一行。此行的值仅为数字。所以我想加上这些数字。

我试过这个循环,但是它写了所有的gridview数字(它不是对它们求和)。

for (int i = 2; i < GridView1.Columns.Count; i++)
{
       int x = 0;
       x += int.Parse(GridView1.Rows[0].Cells[i].Text);
       Response.Write(x.ToString());                    
}

3 个答案:

答案 0 :(得分:1)

我认为你应该从不同的角度来看待这个问题。 GridView只是一个显示控件,并且不会保留&#39;它正在显示的数据。您正在尝试使用屏幕抓取功能确实无法包含的数据。做法。您应该首先查看绑定到网格的DataSource并使用那里的数据。

例如:

List<YourObjectWithTheNumbers> lst = something;
yourGridView.DataSource = lst;
ViewState["YourData"] = lst;  // you could use Session instead: Session["YourData"]

因此,此时您的数据已被绑定并保存供以后使用,因此现在只需更新您的号码并再次重新绑定到GridView

List<YourObjectWithTheNumbers> lst =
    (List<YourObjectWithTheNumbers>)(ViewState["YourData"]);
int rowTotal = 0;
rowTotal += lst[0].Field1;
rowTotal += lst[0].Field2;
//etc...
yourLiteral.Text = rowTotal.ToString();

此时您正在使用实际数据,而不是将其拉出应该用于显示目的的网格。它也更安全,因为您可以在必要时将数据源安全地存储在服务器上(如果这是一个问题,请不要使用ViewState)这样它就不可能操纵。

答案 1 :(得分:0)

在HTML GridView渲染为表格中,您可以更好地使用Jquery添加值

var total=0;
$('#gridview1').find('tr td').each(function(i, td){ 
            var data= parseInt( $(td).val()); 
            total+=data;
 });

答案 2 :(得分:0)

我创建了循环的方法,它工作了!!!!!!!

public int Sum()
{
    int z = 0;
    int i;
    int x = 0;
    for (i = 0; i < GridView1.Columns.Count; i++)
    {

        x += int.Parse(GridView1.Rows[0].Cells[i].Text);

    }
return x;
}  

这是@ N4TKD的想法。谢谢你!!!!