后台获取前台table里的值

xiangkun404_sh 2012-02-20 03:17:31
我用javascript在前台表格里新增了行,但是我怎么能把这些新增的行里的数据写到后台去?我在后台写保存方法,需要取到前台table里所有单元格的值:
附上我js的代码和前台代码:

//动态增加行
function addRow()
{
var tab=document.getElementById("table2");

var tabrow=tab.rows.length;

//创建行
var _tr=tab.insertRow();

//创建第一列
var _tdId=_tr.insertCell(0);
//第一列赋值
_tdId.innerHTML = tabrow;
//创建第二列
var _tdDate=_tr.insertCell(1);
//第二列赋值(日期)
_tdDate.innerHTML=getDate();
//创建第三列
var _tdAuthor=_tr.insertCell(2);
_tdAuthor.innerHTML="<input type='text' id='ColAuthor"+tabrow+"' class='input' size='10' >";
//创建第四列
var _tdMoney =_tr.insertCell(3);
_tdMoney.innerHTML="<input type='text' id='ColMoney"+tabrow+"' class='input' size='10' >";
//创建第五列
var _tdPayment=_tr.insertCell(4);
_tdPayment.innerHTML="<input type='text' id='ColPayment"+tabrow+" 'class='input' size='28' >";

}

//获取日期
function getDate()
{
var mydate=new Date();
var _year=mydate.getFullYear();
var _month=mydate.getMonth()+1;
var _day=mydate.getDate();

var currentDate= _year+"-"+_month+"-"+_day;

return currentDate;
}


<form id="form1" runat="server">
<div>
<table width="600px">
<tr>
<td>
<input type="button" id="btnaddrow" onclick="addRow();" value="增加行"/>
<asp:Button ID="btnSave" runat="server" Text="保存" onclick="btnSave_Click" />

</td>
</tr>
<tr>
<td style="width:100%;">
<table id="table2" width="100%" border="#035A95 1px solid;" cellpadding="">
<tr>
<td id="ColId" Width="60px;" align="center"> 序号</td>
<td id="ColDate" Width="120px" align="center">审核时间</td>
<td id="ColAuthor" Width="120px" align="center"> 提起人</td>
<td id="ColMoney" Width="100px" align="center"> 金额</td>
<td id="ColPayment" Width="200px" align="center">审核依据</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>

...全文
1217 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyf_1990 2012-08-07
  • 打赏
  • 举报
回复
楼主,我现在也遇到这个问题了,我还是一个js菜鸟,高手们说的,我还是不怎么明白,您能给我一个实例么,1519468051@qq.com,谢谢
xiangkun404_sh 2012-02-22
  • 打赏
  • 举报
回复
我就是照楼上的那个方法做的,问题解决,结贴!
cykb518 2012-02-20
  • 打赏
  • 举报
回复
你不用ajax 也是,在页面放一个隐藏控件,hidden,

给按钮增加一个 onclientclick事件 也就是在提交的时候先执行一个js方法。
在这个js方法里面 你按照他们前面说的把这个数据表里的数据取出来然后组装(这儿怎么组装后台就怎么拆开)成一个字符串,然后复制给hidden控件。
然后再后台btnSave_Click 事件中获取这个hidden的值,这样就就获取到这个table里面的数据了
wosizy 2012-02-20
  • 打赏
  • 举报
回复

function addRow()
{
var tab=document.getElementById("table2");

var tabrow=tab.rows.length;

//创建行
var _tr=tab.insertRow();

//创建第一列
var _tdId=_tr.insertCell(0);
//第一列赋值
_tdId.innerHTML = tabrow;
//创建第二列
var _tdDate=_tr.insertCell(1);
//第二列赋值(日期)
_tdDate.innerHTML=getDate();
//创建第三列
var _tdAuthor=_tr.insertCell(2);
_tdAuthor.innerHTML="<input type='text' Name='ColAuthor"+tabrow+"' class='input' size='10' >";//然后标签里加上runat=server
//创建第四列
var _tdMoney =_tr.insertCell(3);
_tdMoney.innerHTML="<input type='text' Name='ColMoney"+tabrow+"' class='input' size='10' >";//然后标签里加上runat=server
//创建第五列
var _tdPayment=_tr.insertCell(4);
_tdPayment.innerHTML="<input type='text' Name='ColPayment"+tabrow+" 'class='input' size='28' >";//然后标签里加上runat=server

}

然后你再在后台获取一下 应该能取到里边的数据了
大雷神 2012-02-20
  • 打赏
  • 举报
回复
个人觉得动态加添行写复杂了
var trhtml =
"<tr>
<td>" +tabrow+ "</td>
<td>" +getDate() + "</td>
<td>"<input type='text' id='ColAuthor"+tabrow+"' class='input' size='10' >"</td> //格式可能有点问题 自己改改
</tr>";
$("#tablecontent").append(trhtml); //给table追加行
获取table中值 就是获取单元格所在的位置

for (var i = 1; i < $("#tablecontent tr").length; i++) { //获取table的行数 给数组赋值
alert($("#tablecontent tr:eq(" + i + ")").find("td:eq(0)").text()); //打印每行第一个单元格里面的值
alert($("#tablecontent tr:eq(" + i + ")").find("td:eq(1)").text()) //每行第二个里面的值
}

//其实可以每行的数据封装成json格式 跟 用ajax跟后台交互
bzyqidaiwanmei 2012-02-20
  • 打赏
  • 举报
回复
Ajax提交可以,楼上方法可以
chen_ya_ping 2012-02-20
  • 打赏
  • 举报
回复
楼主你就AJAX提交数据行了啊,费这个事情干嘛
chen_ya_ping 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csover8 的回复:]

在动态创建列的时候,,加上runat='server'.然后在后台..取值.

this.ColPayment+i.value取到值..试试.
[/Quote]
js如果写了这个代码 runat=“server”,没有效果。
孟子E章 2012-02-20
  • 打赏
  • 举报
回复
你可以参考
http://dotnet.aspx.cc/file/Save-Xml-Using-GridView.aspx
里面的js设置方法和后台的获取方法
孟子E章 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiangkun404_sh 的回复:]

楼上的是说在创建td的时候都加一个id么?
那么我在后台怎么能循环取到每个td里的数据呢?如何对前台的table做循环?
[/Quote]

没用的

你需要给<input 加name。而不是使用id


_tdAuthor.innerHTML="<input type='text' name='ColAuthor"+tabrow+"' class='input' size='10' >";
丁码农 2012-02-20
  • 打赏
  • 举报
回复
在td里面添加表单元素,加上name属性,可以用Request["theName"]去取值
更简便的是,加上runat=server 服务器端直接取值
xiangkun404_sh 2012-02-20
  • 打赏
  • 举报
回复
楼上的是说在创建td的时候都加一个id么?
那么我在后台怎么能循环取到每个td里的数据呢?如何对前台的table做循环?
csover8 2012-02-20
  • 打赏
  • 举报
回复
在动态创建列的时候,,加上runat='server'.然后在后台..取值.

this.ColPayment+i.value取到值..试试.
PandaIT 2012-02-20
  • 打赏
  • 举报
回复
创建标签时 加一个Name

cs里用Request["Name"]

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧