CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何动态统计DATAGRID里模版列(textbox)的数据?

楼主ff167(没有)2005-11-21 10:58:24 在 .NET技术 / C# 提问

尝试过写autopostback,结果因为模版列的textbox的id是变的,没办法进行统计.  
   
  想问下有其他方法解决吗?谢谢 问题点数:20、回复次数:9Top

1 楼q_po_o(两个人)回复于 2005-11-21 11:27:16 得分 0

不明白??Top

2 楼ff167(没有)回复于 2005-11-21 11:33:14 得分 0

比如说这样的网格  
  AAAAA|BBBBB|CCCCC  
          0|   1000|     100  
          1|     100|      
          2|       10|       10  
   
  最后的CCCCC就是一个模版列,是textbox,为了要编辑数据而出来的,我这里的设计是可以批量修改数据,但现在就想对CCCCC这列的数据进行动态统计,就是输入数后,在行尾把输入数据的总和显示出来.如果用按钮来提交的话当然是可以的,但想用autopostback来进行计算,就不知道应该怎么做了.  
   
  谢谢Top

3 楼ff167(没有)回复于 2005-11-21 14:13:13 得分 0

提一下  
  Top

4 楼j_lei407(落日一笑)回复于 2005-11-21 15:20:59 得分 0

mark!Top

5 楼junhao_666()回复于 2005-11-22 08:46:29 得分 0

可以试一下遍历那一列的单元格   怎么样?  
   
  float     count=0;  
  for(int   i=0;i<e.Item.Cells.Count-1;i++)  
    {      
              count=count+e.Item.Cells[i].text;  
    }Top

6 楼swellxxj(一剑飘香)回复于 2005-11-22 09:52:38 得分 5

function   DoCal()  
  {  
   var   e   =   event.srcElement;  
   var   row   =   e.parentNode.parentNode;  
   var   txts   =   row.all.tags("INPUT");  
   if   (!txts.length   ||   txts.length<   3)  
    return;  
   
   var   q   =   txts[txts.length-3].value;  
   var   p   =   txts[txts.length-2].value;  
   
   if   (isNaN(q)   ||   isNaN(p))  
    return;  
   
   q   =   parseInt(q);  
   p   =   parseFloat(p);  
   
   txts[txts.length-1].value   =   (q   *   p).toFixed(2);  
   d=document.getElementById("DataGrid1")  
  var   count   =   0  
  var   count1   =   0  
  for(i=1;i<d.rows.length-1;i++)  
  {  
  count+=parseInt(d.rows[i].cells[7].all.tags("INPUT")[0].value)   //数量列求和  
          count1+=parseInt(d.rows[i].cells[9].all.tags("INPUT")[0].value)   //金额列求和  
  }  
   
  d.rows[d.rows.length-1].cells[7].innerText=count  
  d.rows[d.rows.length-1].cells[9].innerText=count1  
  }Top

7 楼q_po_o(两个人)回复于 2005-11-22 12:00:19 得分 15

看了思归的,写的:)  
   
  <%@   Page   language="c#"   Codebehind="WebForm1.aspx.cs"   AutoEventWireup="false"   Inherits="WebApplication2.WebForm1"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <HEAD>  
  <TITLE>WebForm1</TITLE>  
  <META   content="Microsoft   Visual   Studio   .NET   7.1"   name="GENERATOR">  
  <META   content="C#"   name="CODE_LANGUAGE">  
  <META   content="JavaScript"   name="vs_defaultClientScript">  
  <META   content="http://schemas.microsoft.com/intellisense/ie5"   name="vs_targetSchema">  
  <SCRIPT   language="javascript">  
  function   Sum()  
  {  
  var   d=document.getElementById("DataGrid1")  
  var   count   =   0  
  var   aValue;  
  for(i=1;i<d.rows.length-1;i++)  
  {  
  aValue=d.rows[i].cells[0].all.tags("INPUT")[0].value  
  if(/[^\d+(\.\d*)?$]/g.test(aValue))    
  {  
  alert("Error!");  
  return;  
  }  
  count+=parseInt(d.rows[i].cells[0].all.tags("INPUT")[0].value)  
  }  
  d.rows[d.rows.length-1].cells[0].all.tags("INPUT")[0].value=count  
  }  
  </SCRIPT>  
  </HEAD>  
  <BODY>  
  <FORM   id="Form1"   method="post"   runat="server">  
  <ASP:DATAGRID   id="DataGrid1"   runat="server"   autogeneratecolumns="False">  
  <COLUMNS>  
  <ASP:TEMPLATECOLUMN   headertext="数量">  
  <ITEMTEMPLATE>  
  <INPUT   ID="Text1"   TYPE="text"   VALUE='<%#   DataBinder.Eval(Container.DataItem,   "num")   %>'   NAME="Text1"   RUNAT="server"   onkeyup="Sum()">  
  </ITEMTEMPLATE>  
  </ASP:TEMPLATECOLUMN>  
  <ASP:BOUNDCOLUMN   headertext="名称"   datafield="NAME"></ASP:BOUNDCOLUMN>  
  </COLUMNS>  
  </ASP:DATAGRID>  
  </FORM>  
  </BODY>  
  </HTML>  
  Top

8 楼ff167(没有)回复于 2005-11-22 14:49:14 得分 0

谢谢楼上两位,代码能用,顺便补一个问题.  
   
  用上面的例子,如果我想用BBBBB列的数字减去CCCCC(就是INPUT)列的数值,JAVASCRIPT里应该怎么取BBBBB行的值呢?谢谢,我自己试写了几个都失败,找帮助文件里也没找到办法.Top

9 楼q_po_o(两个人)回复于 2005-11-22 21:31:58 得分 0

转贴  
   
  在ASP.NET中經常會遇到多筆錄入的情況,而且是在ItemTemplate下(許多User都不願編輯一筆存一筆),經過多次的嘗試,近日總算找到了思歸的一小段代碼,解決了我多日來的難題  
  我有一個頁面但由於筆數不確定,所以只能採用DataGrid來實現,而且還是在ItemTemplate中,當點選客戶下拉選單時要將客戶代號SHOW在旁邊的textbox中,昨天找到一客戶端的參考,今日嘗試改寫後通過啦^__^  
  參考代碼如下:  
  <asp:TemplateColumn   HeaderText="数量">    
      <ItemTemplate>  
        <asp:TextBox   id="ShuLiang"   runat='server'   Text='<%#   DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>'      
          onkeyup=DoCal()"  
        />  
   
        <asp:RegularExpressionValidator   id="revS"   runat="server"   ControlToValidate="ShuLiang"   ErrorMessage="must   be   integer"   ValidationExpression="^\d+$"   />  
      </ItemTemplate>  
              </asp:TemplateColumn>  
   
              <asp:TemplateColumn   HeaderText="单价">    
      <ItemTemplate>  
        <asp:TextBox   id="DanJian"   runat='server'   Text='<%#   DataBinder.Eval(Container.DataItem,"DG_DanJian")%>'    
          onkeyup=DoCal()"  
        />  
   
      <asp:RegularExpressionValidator   id="revS2"   runat="server"   ControlToValidate="DanJian"   ErrorMessage="must   be   numeric"   ValidationExpression="^\d+(\.\d*)?$"   />  
   
      </ItemTemplate>  
              </asp:TemplateColumn>  
   
            <asp:TemplateColumn   HeaderText="金额">    
      <ItemTemplate>  
        <asp:TextBox   id="JinE"   runat='server'   Text='<%#   DataBinder.Eval(Container.DataItem,"DG_JinE")%>'   />  
      </ItemTemplate>  
              </asp:TemplateColumn>  
   
  <script   language="javascript">  
  function   DoCal()  
  {  
      var   e   =   event.srcElement;  
      var   row   =   e.parentNode.parentNode;  
      var   txts   =   row.all.tags("INPUT");  
      if   (!txts.length   ||   txts.length   <   3)  
    return;  
     
      var   q   =   txts[txts.length-3].value;  
      var   p   =   txts[txts.length-2].value;  
   
      if   (isNaN(q)   ||   isNaN(p))  
    return;  
   
      q   =   parseInt(q);  
      p   =   parseFloat(p);  
   
      txts[txts.length-1].value   =   (q   *   p).toFixed(2);  
  }  
  </script>Top

相关问题

  • 如何取得DataGrid模版里TextBox值
  • 请问如何用js获取Datagrid中模版列中DropdownList和textbox的值?
  • 朋友们如何提取DataGrid模版列里面的TextBox的值呢?
  • datagrid 模版的小问题?
  • DataGrid模版列问题
  • DataGrid模版列的排序问题
  • 急!datagrid模版列的问题
  • 关于DataGrid和DataList的模版
  • datagrid统计行
  • 模版

关键词

得分解答快速导航

  • 帖主:ff167
  • swellxxj
  • q_po_o

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo