<asp:datagrid>
....
<asp:TemplateColumn HeaderText="单价"  ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:TextBox TextMode="SingleLine" Width="100" ID="ItemTboxDj"
 EnableViewState="True" runat="server" ></asp:TextBox></ItemTemplate></asp:TemplateColumn><asp:TemplateColumn HeaderText="数量"  ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:TextBox TextMode="SingleLine" Width="100" ID="ItemTboxSl"
 EnableViewState="True" runat="server" ></asp:TextBox></ItemTemplate></asp:TemplateColumn><asp:TemplateColumn HeaderText="金额"  ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:TextBox TextMode="SingleLine" Width="100" ID="ItemTboxJe"
 EnableViewState="True" runat="server" ></asp:TextBox></ItemTemplate></asp:TemplateColumn>
...
</asp:datagrid>
如何在单价或者数量改变时,改变金额栏的值!拜托!!

解决方案 »

  1.   

    看来只有用我不懂的JS了^_*
    如果楼下的也没找到好的办法的话我建议你添加一个按忸,改动后提交一次,在CS中计算
      

  2.   

    在ItemDataBind的时候,通过行的FindControl找到文本框,给其绑定JavaScript。
    我做个一个OnKeyUp就运算的,改为失去焦点应该很简单。今天比较晚了,不行明天给你代码看看。
      

  3.   

    在你的DATAGRID绑定之后,立即执行如下代码:
    this.datagrid1.DataBind();for(int i=0;i<this.datagrid1.Items.Count;i++)
    {
    TextBox ItemTboxDj = (TextBox )this.datagrid1.Items[i].FindControl("ItemTboxDj");
    TextBox ItemTboxSl = (TextBox )this.datagrid1.Items[i].FindControl("ItemTboxSl");
    TextBox ItemTboxJe = (TextBox )this.datagrid1.Items[i].FindControl("ItemTboxJe");
    //添加单价的失去焦点事件
    ItemTboxDj.Attributes.Add("onblue","document.all('" + ItemTboxJe.ClientID + "').value = this.value * document.all('" + ItemTboxSl.ClientID + "').value;");
    //添加数量的失去焦点事件
    ItemTboxSl.Attributes.Add("onblue","document.all('" + ItemTboxJe.ClientID + "').value = this.value * document.all('" + ItemTboxDj.ClientID + "').value;");
    }这样,只要在单价或数量里面填写数量之后,鼠标一离开,金额即会出现.
    不过上述处理,仅简单的处理了乘法关系,其他的比如未填写值啊,填写了非数字等除错,都没有加入,楼主可自行处理.