我在Gridview Control中有Textbox。当我在Textbox上输入数量时,我必须在Gridview页脚上显示。
我试过这个,
static float total=0;
protected void txtintroId_TextChanged(object sender, EventArgs e)
{
TextBox txt = (TextBox)sender;
GridViewRow grid = ((GridViewRow)txt.Parent.Parent.Parent);
TextBox txt1= (TextBox)txt.FindControl("txtbox");
total=float.parse(txt1.Text);
GridView1.FooterRow.Cells[4].Text = total.ToString();
}
它的工作原理,但问题是一次又一次地更改相同的文本框值。文本框值添加总计。 我该如何解决这个问题?
答案 0 :(得分:2)
txt.Parent.Parent.Parent
使用txt.NamingContainer
。ViewState
/ Session
/ Hiddenfield
在回发中保留一个值。TextBox txt = (TextBox)sender;
float value = float.Parse(txt.Text);
GridViewRow row = (GridViewRow) txt.NamingContainer;
GridView gridView = (GridView) row.NamingContainer;
float total = gridView.Rows.Cast<GridViewRow>()
.Sum(row => float.Parse(((TextBox) row.FindControl("txtbox")).Text));
如果你不能使用LINQ或TextBoxes可以为空或包含其他无效格式,请使用普通循环:
float total = 0;
foreach (GridViewRow gridViewRow in gridView.Rows)
{
txt = (TextBox) gridViewRow.FindControl("txtbox");
float rowValue = 0;
if (float.TryParse(txt.Text.Trim(), out rowValue))
total += rowValue;
}