读书人

动态增加gridview 的行数时异常了

发布时间: 2013-12-17 12:06:34 作者: rapoo

动态增加gridview 的行数时错误了?
在一个gridview中 动态增加行数 gridview中在footer 还有合计行
如果没有合计行的话 代码没问题 但是加上合计行就出错了

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误:


行 154: {
行 155: DataRowView myrows = (DataRowView)e.Row.DataItem;
行 156: jshj += Convert.ToInt32(myrows[3].ToString());
行 157: zlhj += Convert.ToDouble(myrows[4].ToString());
行 158: tjhj += Convert.ToDouble(myrows[5].ToString());

添加行代码如下

        int jshj = 0;
double zlhj = 0;
double tjhj = 0;
double hwyf = 0;
double bxe = 0;
double bxf = 0;
double hwhk = 0;
double zyf = 0;
protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView myrows = (DataRowView)e.Row.DataItem;
jshj += Convert.ToInt32(myrows[3].ToString());
zlhj += Convert.ToDouble(myrows[4].ToString());
tjhj += Convert.ToDouble(myrows[5].ToString());

hwyf += Convert.ToDouble(myrows[8].ToString());
bxe += Convert.ToDouble(myrows[9].ToString());
bxf += Convert.ToDouble(myrows[10].ToString());
hwhk += Convert.ToDouble(myrows[11].ToString());
zyf += Convert.ToDouble(myrows[12].ToString());
}

if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[1].Text = "合计";
e.Row.Cells[2].Text = jshj.ToString();
e.Row.Cells[3].Text = tjhj.ToString();
e.Row.Cells[4].Text = zlhj.ToString();
e.Row.Cells[7].Text = hwyf.ToString();
e.Row.Cells[8].Text = bxe.ToString();
e.Row.Cells[9].Text = bxf.ToString();
e.Row.Cells[10].Text = hwhk.ToString();
e.Row.Cells[11].Text = zyf.ToString();

}
}

protected void gvData_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvData.EditIndex = -1;
Bind();
}


protected void btnAdd_Click(object sender, EventArgs e) //打印
{
//ClientScript.RegisterStartupScript(typeof(Page), "aa", "javascript:PrintData('" + lblSO_BH.Text + "')", true);
}
private DataTable GetGridViewData()
{
DataTable table = new DataTable();
table.Columns.Add(new DataColumn("ID"));
table.Columns.Add(new DataColumn("hwmc"));
table.Columns.Add(new DataColumn("hwzjs"));

table.Columns.Add(new DataColumn("hwztj"));
table.Columns.Add(new DataColumn("hwzzl"));
table.Columns.Add(new DataColumn("ddlJY_jfbz"));
table.Columns.Add(new DataColumn("hwdj"));
table.Columns.Add(new DataColumn("hwyf"));
table.Columns.Add(new DataColumn("bxe"));
table.Columns.Add(new DataColumn("bxf"));
table.Columns.Add(new DataColumn("hwhk"));
table.Columns.Add(new DataColumn("zyf"));
//table.Columns.Add(new DataColumn("jsbzbm"));
foreach (GridViewRow row in gvData.Rows)
{
DataRow sourseRow = table.NewRow();
sourseRow["ID"] = row.Cells[0].Text;
sourseRow["hwmc"] = ((TextBox)row.Cells[1].FindControl("hwmc")).Text;
sourseRow["hwzjs"] = ((TextBox)row.Cells[2].FindControl("hwzjs")).Text;
sourseRow["hwztj"] = ((TextBox)row.Cells[3].FindControl("hwztj")).Text;
sourseRow["hwzzl"] = ((TextBox)row.Cells[4].FindControl("hwzzl")).Text;
sourseRow["ddlJY_jfbz"] = ((DropDownList)row.Cells[5].FindControl("ddlJY_jfbz")).Text;
sourseRow["hwdj"] = ((TextBox)row.Cells[5].FindControl("hwdj")).Text;
sourseRow["hwyf"] = ((TextBox)row.Cells[6].FindControl("hwyf")).Text;
sourseRow["bxe"] = ((TextBox)row.Cells[7].FindControl("bxe")).Text;
sourseRow["bxf"] = ((TextBox)row.Cells[8].FindControl("bxf")).Text;
sourseRow["hwhk"] = ((TextBox)row.Cells[9].FindControl("hwhk")).Text;
sourseRow["zyf"] = ((TextBox)row.Cells[10].FindControl("zyf")).Text;
//sourseRow["jsbzbm"] = ((TextBox)row.Cells[10].FindControl("jsbzbm")).Text;
table.Rows.Add(sourseRow);
}
return table;
}
protected void btnHang_Click(object sender, EventArgs e) //增加一行
{
DataTable table = GetGridViewData();
DataRow newRow = table.NewRow();
newRow["ID"] = Guid.NewGuid().ToString();


newRow["hwmc"] = "";
newRow["hwzjs"] = "0";
newRow["hwztj"] = "0.000";
newRow["hwzzl"] = "0.000";
newRow["ddlJY_jfbz"] = "01";
newRow["hwdj"] = "0";
newRow["hwyf"] = "0";
newRow["bxe"] = "0";
newRow["bxf"] = "0";
newRow["hwhk"] = "0";
newRow["zyf"] = "0";
table.Rows.Add(newRow);
gvData.DataSource = table;
gvData.DataBind();

}


[解决办法]
http://www.cnblogs.com/chy710/archive/2007/03/27/690251.html
http://www.cnblogs.com/badwood316/archive/2008/02/04/1064438.html
参考

读书人网 >C#

热点推荐