讨教:DataGrid编辑时某个编辑框的值能根据另外几个编辑框的值而变化 如题,本人在ItemDataBound事件中在e.Item.ItemType == ListItemType.EditItem内写了语句,无法实现要求,请帮助!是否在另外的事件中? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TextBox tb1 =(TextBox)e.Item.Cells[0].FindControls("TextBox1");TextBox tb2 =(TextBox)e.Item.Cells[2].FindControls("TextBox2");TextBox tb3 =(TextBox)e.Item.Cells[3].FindControls("TextBox3");tb3.Text=tb1.Text+tb2.Text; 楼主应该在客户端使用js实现这样的功能,贴出你的页面绑写代码来,我帮里写一段js 这个datagrid列数较多,我就截取了一部分示意一下。页面:<asp:datagrid id="dg_product" runat="server" CssClass="t1"ShowFooter="True" AutoGenerateColumns="False" PageSize="25"><asp:TemplateColumn HeaderText="采购价格"> <HeaderStyle Width="4%"></HeaderStyle> <ItemTemplate> <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.cgjg", "{0:0.00}") %>' CssClass="t1"> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox id=t_cgjg runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.cgjg", "{0:0.00}") %>' CssClass="t1" Width="40px"> </asp:TextBox> </EditItemTemplate></asp:TemplateColumn><asp:TemplateColumn HeaderText="采购数量"> <HeaderStyle Width="5%"></HeaderStyle> <ItemTemplate> <asp:Label id=Label6 runat="server" CssClass="t1" Text='<%# DataBinder.Eval(Container, "DataItem.cgsl") %>'> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox id=t_cgsl runat="server" CssClass="t1" Text='<%# DataBinder.Eval(Container, "DataItem.cgsl") %>' Width="32px"> </asp:TextBox> </EditItemTemplate></asp:TemplateColumn><asp:TemplateColumn HeaderText="总金额"> <HeaderStyle Width="5%"></HeaderStyle> <ItemTemplate> <asp:Label id=Label8 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.zje", "{0:0.00}") %>' CssClass="t1"> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox id=t_zje runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.zje", "{0:0.00}") %>' CssClass="t1" Width="56px"> </asp:TextBox> </EditItemTemplate></asp:TemplateColumn></Columns></asp:datagrid>cs:private void dg_product_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e){ if (e.Item.ItemType == ListItemType.EditItem) { float aa = float.Parse(((TextBox)e.Item.FindControl("t_cgjg")).Text.Trim()) * float.Parse(((TextBox)e.Item.FindControl("t_cgsl")).Text.Trim()); ((TextBox)e.Item.FindControl("t_zje")).Text = aa.ToString(); }}我需要实现的功能就是在编辑某条记录时当输入采购价格或采购数量时总金额能自动计算,我发现这段代码无法实现,请oldcsdn写段js,谢谢! 你可以在ItemDataBound中查找ItemType是EditItem的行然后为里面的几个TextBox加上js事件 楼上的兄弟,你能帮我写段js吗?本人对js不是很熟,最好能写上怎样调用该js,谢谢! js:<script language=javascript> function showTotal() { var obj=event.srcElement.parentElement.parentElement; var price = obj.childNodes[0].childNodes[0].value;alert(price); var num = obj.childNodes[1].childNodes[0].value; var total = parseFloat(price)*parseFloat(num); obj.childNodes[2].childNodes[0].innerText = total; } </script>cs:private void dg_product_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemType == ListItemType.EditItem) { TextBox txtcgjg = (TextBox)(e.Item.FindControl("t_cgjg")); TextBox txtcgsl = (TextBox)(e.Item.FindControl("t_cgsl")); txtcgjg.Attributes.Add( "onkeyup","showTotal();"); txtcgsl.Attributes.Add( "onkeyup","showTotal();"); } } //还是加点注释吧!function showTotal() { var obj=event.srcElement.parentElement.parentElement; //获取tr 对象 //获取采购价格列输入框. // obj.childNodes[0] 第一个td // obj.childNodes[0].childNodes[0] -->采购价格输入框 //下面类似 var price = obj.childNodes[0].childNodes[0].value;alert(price); var num = obj.childNodes[1].childNodes[0].value; //获取数量列输入框 var total = parseFloat(price)*parseFloat(num); obj.childNodes[2].childNodes[0].innerText = total; //总金额 }楼主可从网页上 "查看源文件"即可看到发送到客户端的table结构,楼主需要自已找到 采购价格,数量,总金额分别为哪列 搞定,谢谢oldcsdn,看来以后要多看看js. 关于母版页的问题~在线等答案 vs2005和vs2008中的FileUpload控件上传大文件有没有问题? 小妹问一个菜鸟问题:关于数据库登录,PostBackUrl 关于前台绑定数据的问题! VS2005 和VS2003 有什么区别? 如何取出打印机墨盒??(题外话) 为什么我不能在win2000 professional使用AspNetMenu1.1组件 请问如何在ASP.net中对字符串进行MD5加密? dataadapter的更新数据库问题 高分!!!在线等待,C#链接sqlserver问题! asp.net里这个datagrid怎么设计 repeater嵌套问题
TextBox tb2 =(TextBox)e.Item.Cells[2].FindControls("TextBox2");
TextBox tb3 =(TextBox)e.Item.Cells[3].FindControls("TextBox3");
tb3.Text=tb1.Text+tb2.Text;
页面:
<asp:datagrid id="dg_product" runat="server" CssClass="t1"ShowFooter="True" AutoGenerateColumns="False" PageSize="25">
<asp:TemplateColumn HeaderText="采购价格"> <HeaderStyle Width="4%"></HeaderStyle> <ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.cgjg", "{0:0.00}") %>' CssClass="t1">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=t_cgjg runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.cgjg", "{0:0.00}") %>' CssClass="t1" Width="40px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="采购数量">
<HeaderStyle Width="5%"></HeaderStyle>
<ItemTemplate>
<asp:Label id=Label6 runat="server" CssClass="t1" Text='<%# DataBinder.Eval(Container, "DataItem.cgsl") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=t_cgsl runat="server" CssClass="t1" Text='<%# DataBinder.Eval(Container, "DataItem.cgsl") %>' Width="32px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="总金额">
<HeaderStyle Width="5%"></HeaderStyle>
<ItemTemplate>
<asp:Label id=Label8 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.zje", "{0:0.00}") %>' CssClass="t1">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=t_zje runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.zje", "{0:0.00}") %>' CssClass="t1" Width="56px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>cs:
private void dg_product_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
float aa = float.Parse(((TextBox)e.Item.FindControl("t_cgjg")).Text.Trim()) * float.Parse(((TextBox)e.Item.FindControl("t_cgsl")).Text.Trim());
((TextBox)e.Item.FindControl("t_zje")).Text = aa.ToString();
}}
我需要实现的功能就是在编辑某条记录时当输入采购价格或采购数量时总金额能自动计算,我发现这段代码无法实现,请oldcsdn写段js,谢谢!
function showTotal()
{
var obj=event.srcElement.parentElement.parentElement;
var price = obj.childNodes[0].childNodes[0].value;alert(price);
var num = obj.childNodes[1].childNodes[0].value;
var total = parseFloat(price)*parseFloat(num);
obj.childNodes[2].childNodes[0].innerText = total;
}
</script>cs:private void dg_product_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
TextBox txtcgjg = (TextBox)(e.Item.FindControl("t_cgjg"));
TextBox txtcgsl = (TextBox)(e.Item.FindControl("t_cgsl"));
txtcgjg.Attributes.Add( "onkeyup","showTotal();");
txtcgsl.Attributes.Add( "onkeyup","showTotal();");
} }
{
var obj=event.srcElement.parentElement.parentElement; //获取tr 对象
//获取采购价格列输入框.
// obj.childNodes[0] 第一个td
// obj.childNodes[0].childNodes[0] -->采购价格输入框 //下面类似
var price = obj.childNodes[0].childNodes[0].value;alert(price);
var num = obj.childNodes[1].childNodes[0].value; //获取数量列输入框
var total = parseFloat(price)*parseFloat(num);
obj.childNodes[2].childNodes[0].innerText = total; //总金额
}
楼主可从网页上 "查看源文件"即可看到发送到客户端的table结构,楼主需要自已找到 采购价格,数量,总金额分别为哪列