日期:2014-05-18  浏览次数:20430 次

◆gridview 模板列相加问题◆
在gridview中有三个模板列:TextBox1,TextBox2,TextBox3  
想实现数值相加功能:TextBox3 = TextBox1 + TextBox2 
怎么写?谢谢!

<asp:TemplateField HeaderText="TextBox1">
  <ItemTemplate>
  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  </ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="TextBox2">
  <ItemTemplate>
  <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  </ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="TextBox3">
  <ItemTemplate>
  <asp:TextBox ID="TextBox3" runat="server" ></asp:TextBox>
  </ItemTemplate>
</asp:TemplateField>

------解决方案--------------------
row["TextBox1"] ="";
row["TextBox2"] =(((TextBox)item.Cells[5].Controls[1]).Text.Trim()+((TextBox)item.Cells[4].Controls[1]).Text.Trim());
Sum2+=Convert.ToSingle(((TextBox)item.Cells[5].Controls[1]).Text.Trim())+Convert.ToSingle(((TextBox)item.Cells[4].Controls[1]).Text.Trim());
textBox2=Sum2;
----------
可是字符类型问题要考虑的很多!
这个就不完全正确了 !
------解决方案--------------------
不要自动生成列,在ItemDataBoud事件中写如下代码


if(e.Item.ItemIndex>=0)
{
e.Item.Cells[3].Text=(int.Parse(e.Item.Cells[0].Text)
+int.Parse(e.Item.Cells[1].Text)
int.Parse(e.Item.Cells[2].Text)).ToString();
//如果有为空值的情况请自己加异常处理
}
...
建议或者

写在sql语句中
select a,b,c,(a+b+c) as d from table

然后在绑定时用模版列

<asp:TemplateColumn HeaderText="合计">
<ItemTemplate>
<%# DataBinder.Eval(Container,"DataItem.d")%>
</ItemTemplate>
</asp:TemplateColumn>
------解决方案--------------------
你这三个相加是什么时候触发的,如果就是在绑定 gridview 时 ,在后台写个方法,
如果在 输入 textbox1 和 2 时 自动在textbox3 中显示 的话 估计 在一个模板列中,

回答错误 还请原谅