如题,本人在ItemDataBound事件中在e.Item.ItemType == ListItemType.EditItem内写了语句,无法实现要求,请帮助!是否在另外的事件中?

解决方案 »

  1.   

    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;
      

  2.   

    楼主应该在客户端使用js实现这样的功能,贴出你的页面绑写代码来,我帮里写一段js
      

  3.   

    这个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,谢谢!
      

  4.   

    你可以在ItemDataBound中查找ItemType是EditItem的行然后为里面的几个TextBox加上js事件
      

  5.   

    楼上的兄弟,你能帮我写段js吗?本人对js不是很熟,最好能写上怎样调用该js,谢谢!
      

  6.   

    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();");
    } }
      

  7.   

    //还是加点注释吧!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结构,楼主需要自已找到 采购价格,数量,总金额分别为哪列
      

  8.   

    搞定,谢谢oldcsdn,看来以后要多看看js.