C# dataGridView怎么计算列

dataGridView怎么计算列??我的dataGridView表中有两列数据分别是“数量”和“出库价格”,现在我要用这两列相乘填到第三列“总价”那怎么实现???我用了... dataGridView怎么计算列?? 我的dataGridView表中有两列数据分别是“数量”和“出库价格”,现在我要用这两列相乘填到第三列“总价”那怎么实现???我用了dataGridView1.Rows[i].Cells[3].Value = dataGridView1.Rows[i].Cells[2].Value * dataGridView1.Rows[i].Cells[9].Value;或dataGridView1[3, i].Value=dataGridView1[2, i].Value * dataGridView1[9, i].Value; 均报错说运算符“*”无法应用于“object”和“object”类型的操作数!怎么是怎么回事啊??
顺便问下SQL2000中的money数据类型怎么用? 我的出库价格和总价现在是用float类型的,但尾数过多,用 money数据类型又出错,哪位高手帮下!!
我的dataGridView中还有其他行的数据的,你说的方法也不行照样是报运算符“*”无法应用于“object”和“object”类型的操作数~~~
2楼
我的i是指行号 也就是第几行。dataGridView1.Rows[i].Cells[2].后面没有text这个属性啊!你说的方法我也试了还是不可以
展开
 我来答
咪密兔解说
2010-04-16 · TA获得超过424个赞
知道小有建树答主
回答量:488
采纳率:0%
帮助的人:286万
展开全部

说点废话啊,能上网说明问题还是可以被解决的。

既然在网上没查到我只能说你的方法不是很正确~

既然你是操作数据,我建议你看下,GridView 72般技巧

虽然不是gridview但是对你的帮助时非常大的~你不信我给你贴个例子就是统计的

解决方案:    

private double sum = 0;//取指定列的数据和,你要根据具体情况对待可能你要处理的是int

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        

        if (e.Row.RowIndex >= 0)

        {

            sum += Convert.ToDouble(e.Row.Cells[6].Text);

        }

        else if (e.Row.RowType == DataControlRowType.Footer)

        {

            e.Row.Cells[5].Text = "总薪水为:";

            e.Row.Cells[6].Text = sum.ToString();

            e.Row.Cells[3].Text = "平均薪水为:";

            e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();

            

        }

    }

后台全部代码:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Drawing;

public partial class Default7 : System.Web.UI.Page

{

    SqlConnection sqlcon;

    SqlCommand sqlcom;

    string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            bind();

        }

    }

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

    {

        GridView1.EditIndex = e.NewEditIndex;

        bind();

    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

    {

        sqlcon = new SqlConnection(strCon);

        string sqlstr = "update 飞狐工作室 set 姓名='"

            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',家庭住址='"

            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where 身份证号码='"

            + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";

        sqlcom = new SqlCommand(sqlstr, sqlcon);

        sqlcon.Open();

        sqlcom.ExecuteNonQuery();

        sqlcon.Close();

        GridView1.EditIndex = -1;

        bind();

    }

    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

    {

        GridView1.EditIndex = -1;

        bind();

    }

    public void bind()

    {

        string sqlstr = "select top 5 * from 飞狐工作室";

        sqlcon = new SqlConnection(strCon);

        SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);

        DataSet myds = new DataSet();

        sqlcon.Open();

        myda.Fill(myds, "飞狐工作室");

        GridView1.DataSource = myds;

        GridView1.DataKeyNames = new string[] { "身份证号码" };

        GridView1.DataBind();

        sqlcon.Close();

    }

    private double sum = 0;//取指定列的数据和

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        

        if (e.Row.RowIndex >= 0)

        {

            sum += Convert.ToDouble(e.Row.Cells[6].Text);

        }

        else if (e.Row.RowType == DataControlRowType.Footer)

        {

            e.Row.Cells[5].Text = "总薪水为:";

            e.Row.Cells[6].Text = sum.ToString();

            e.Row.Cells[3].Text = "平均薪水为:";

            e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();

            

        }

    }

}

前台:唯一的花头就是设置ShowFooter="True" ,否则默认表头为隐藏的!

<asp:GridView ID="GridView1" runat="server"    AutoGenerateColumns="False" CellPadding="3"  OnRowEditing="GridView1_RowEditing"

                        OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True"  >

                        <FooterStyle BackColor="White" ForeColor="#000066" />

                        <Columns>

                            <asp:CommandField HeaderText="编辑" ShowEditButton="True" />

                            <asp:BoundField DataField="身份证号码" HeaderText="编号" ReadOnly="True" />

                            <asp:BoundField DataField="姓名" HeaderText="姓名"  />

                            <asp:BoundField DataField="出生日期" HeaderText="邮政编码"  />

                            <asp:BoundField DataField="家庭住址" HeaderText="家庭住址"  />

                            <asp:BoundField DataField="邮政编码" HeaderText="邮政编码" />

                            <asp:BoundField DataField="起薪" HeaderText="起薪"  />

                           

                        </Columns>

                        <RowStyle ForeColor="#000066" />

                        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />

                        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left"  CssClass="ms-formlabel DataGridFixedHeader"/>

                        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />

                    </asp:GridView>

你自己试试吧~整个是自动求和,你说的Money类型的数据要多看数据库了~

有问题在联系~

参考资料: GridView 72般技巧

497995897
推荐于2018-04-06 · TA获得超过875个赞
知道小有建树答主
回答量:714
采纳率:65%
帮助的人:166万
展开全部
表中用什么类型问题不大,用的时候强转一下就好了。我想,你可以把dataGridView先设置为三列
dataGridView1.Rows[i].Cells[2].Value = Couvert.ToString(dataGridView1.Rows[i].Cells[0].Value * dataGridView1.Rows[i].Cells[1].Value))
大概这么个意思就能在第三列中显示总价。
不用非得用text,value也行 那你把...Value。ToString() 这么改,看看
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hy_0825
2010-04-14 · 超过23用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:68.6万
展开全部
不知道你的Rows[i]这是什么意思,是循环么
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[2].Text=e.Row.Cells[0].Text * e.Row.Cells[1].Text;
//不知道这样写对不对,数据类型转换就转换下
}
用GridView数据绑定事件,它不就是循环所有的行哈,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式