求教各位大虾:
我现在有个GridView里面总共有5列
其中前三列为在数据库里捞出来的,后两列要根据前三列的Footer值计算出来
请问怎么来填充最后两列的值:
计算公式:
第四列第一行=第二列第一行/第二列Footer
cell[4,1]=cell[2,1]/第二列Footer
cell[4,1]=7952.25/8987.88以此类推:
cell[4,2]=627.13/8987.88
Footer的值是在RowDataBound事件中一行一行加总起来的
请问有什么方法可以实现我的需求?
GridViewasp.netC#
我现在有个GridView里面总共有5列
其中前三列为在数据库里捞出来的,后两列要根据前三列的Footer值计算出来
请问怎么来填充最后两列的值:
计算公式:
第四列第一行=第二列第一行/第二列Footer
cell[4,1]=cell[2,1]/第二列Footer
cell[4,1]=7952.25/8987.88以此类推:
cell[4,2]=627.13/8987.88
Footer的值是在RowDataBound事件中一行一行加总起来的
请问有什么方法可以实现我的需求?
GridViewasp.netC#
有木有办法直接对GridView进行操作呢?
http://www.cnblogs.com/insus/archive/2013/03/22/2975824.html或是在数据库中,实现。
创建一个临时表,表结构与你想显示的结构一样。
处理好数据,再填充这个临时表中。
最后
select * from temp_table
在程序中,也是可以的。
需要创建两个模版列。
在OnRowDataBound事件处理。可以参考Repeater的实现:
http://www.cnblogs.com/insus/archive/2013/03/22/2975824.html
外观看着在一个“表格”内就OK了。
{
GridView1.DataSource = TM.DBUtility.DbHelperSQL.GetDataTable("select * from Table_1");
GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex >= 0)
e.Row.Cells[0].Text = (int.Parse(e.Row.Cells[1].Text) * 3 + int.Parse(e.Row.Cells[3].Text) * 5).ToString();
}
前台
<asp:GridView ID="GridView1" runat="server"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="折合页(id*3+answer*5)" ></asp:TemplateField>
</Columns>
</asp:GridView>
if (e.Row.RowIndex >= 0)
e.Row.Cells[0].Text = (int.Parse(e.Row.Cells[1].Text)/int.Parse(e.Row.Cells[2].Text)).ToString();
float 流失工时=0.00;
foreach(DataRow dr in dt.rows){
流失工时+=float.parse(dr["流失工时"].tostring());//获取总的时间了
}
foreach(DataRow dr in dt.rows){
dr["占停机总时比例"]=(float.parse(dr["停机工时"].tostring())/流失工时).tostring();
...
}
gridview.datasource=dt;
gridview.databinding();代码大概就是这样