将html表格中的数据存储到数据库,搞了很久还是没搞定!!!!新手请大家帮帮忙吧,分一定送结帖率真百分百!!

志在千里 2012-10-23 08:28:43
我用的是MVC框架,html中的数据是从xml文件中获取的,table中的每行中有两个checkbox,第一个用来选中该行,第二个用来选择是否启用textbox。现在的情况是把选中行的数据传到后台然后再放入数据库中。写了段js代码,从表格中获取了数据,但获取的数据都堆放在一起了,表格中的每一列对应数据库中的每个字段,怎样把输出的那堆数据拆开并传入后台,最终存入数据库呢?请高手指点一下,非常感谢。用其它方法也行听网友说用jquery比较方便,但本人新手请大家帮忙。
后台代码应该怎样写?或前台代码应该怎样更改多谢。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script type="text/javascript">
//控制textbox
window.onload = function () {
$(".chk").each(function (i, j) {
$(this).next().attr("disabled", "disabled");
$(j).click(function () {
if ($(this).attr("checked"))
$(this).next().attr("disabled", "");
else
$(this).next().attr("disabled", "disabled");
});
});
};
</script>
<script type="text/javascript">
function bianli() {

var xxx = new Array();
var hiddenvalue_Step_No = "";
var hiddenvalue_Step_Name = "";
var hiddenvalue_Append_Name = "";
var tbl = document.getElementById("flowtbl");
var tbodys = tbl.tBodies; //获取表格中所有 tBody 对象的集合.
for (var i = 0; i < tbodys.length; i++) {
var rows = tbodys[i].rows;//集合中的行数
/// alert(i+"i");
for (var j = 0; j < rows.length; j++) {
//alert(j+"j");
var cells = rows[j].cells;//定义行内单元格集合
var spans = rows[j].getElementsByTagName("span");//返回标签为span的对象
for (var t = 0; t < cells.length; t++) {
//alert(t+"t");
var inputs = cells[t].getElementsByTagName("input");//返回标签为input的对象
if (inputs.length > 0) {
if (inputs[j].type == "checkbox" && inputs[j].checked == true) {
var tdlist = cells[t].parentNode.childNodes;//
for (var d = 0; d < tdlist.length; d++) {
//alert(d+"d");
var spans2 = tdlist[d].getElementsByTagName("span");
if (spans2.length > 0) {
for (var k = 0; k < spans2.length; k++) {
hiddenvalue_Step_No += (spans2[k].innerHTML + ",");
}
}
else {
continue;
}

}
}
}

}
xxx[j] = hiddenvalue_Step_No;


var hidcontrol = document.getElementById("<% = hidvalue.ID%>");
hidcontrol.value = xxx[j];
hiddenvalue_Step_No = "";
$("#hidvalue).val(xxx[j]);


}
}
document.form[0].submit();
}
</script>
<head id="Head1" runat="server">
<title>设计</title>
</head>
<body>
<form id="form1" runat="server">
<div id="interface_inside">
<div id="interface_quick">
<div class="interface_quick_left">
您现在的操作 >> 设计
</div>
</div>
<div id="interface_main">
<div id="tabs_config" class="tabsbox">
<div class="clearboth">
</div>
<!-- 模块 -->
<div id="config_basic1" class="tabs_wrapper">
<div id="PanelConfig">
<div class="blank_10">
</div>
<table class="table subsubmenu">
<thead>
<tr>
<td class="style3">
设计
</td>
</tr>
</thead>
</table>
<div id="PanelDefault">
<table class="table">
<tr>
<th style="font-weight: bold;" class="style7">
 *名称:
</th>
<td class="style4">
<%=Html.TextBox("Flow_ModelName")%>
</td>
</tr>
<tr>
<th style="font-weight: bold;" class="style8">
 *备注:
</th>
<td class="style6">
<%=Html.TextBox("Remark") %>
</td>
</tr>
</table>
<xml id="dso2" src="/Configs/XML_FlowStep.xml"></xml>
<table id="flowtbl" datasrc="#dso2" class="table">
<thead>
<th align="left">
<input input name="chkAll" type="checkbox" id="chkAll" onclick="CheckAll(this.form)"
value="11" />
是否选择行 </th>
<th>
编号
</th>
<th>
名称
</th>
<th>
审核 </th>
</thead>
<tr>
<td>
<input type="checkbox" class="chk1" value="11" />
</td>
<td>
<span datafld="ID"></span>
</td>
<td>
<span datafld="name"></span>
</td>
<td>
<input type="checkbox" class="chk" /><input type="text" />
</td>
</tr>
</table>
<td><input type="button" ID="Button1" text="send" onclick="bianli()" runat="server" />
<input type="text" id="hidvalue" value="" name="Fsname"/>
<table>
<tr>
<td>
  
<input type="button" class="button" value='关闭' onclick="javascript:window.close()" />
<input type="submit" class="button" value='提交' />
<input type="reset" class="button" value='重置' />
</td>
</tr>
</table>
<br />
</div>
</div>
</div>
</div>
</div>
<!-- 模块 -->
</div>
</form>
</body>
</html>
[/code]
<xml id="dso2" src="/Configs/XML_FlowStep.xml"></xml>
<table id="flowtbl" datasrc="#dso2" class="table">
<thead>
<th align="left">
<input type="checkbox" class="all" />
是否选择行 </th>
<th>
编号
</th>
<th>
名称
</th>
<th>
审核 </th>
</thead>
<tr>
<td>
<input type="checkbox" class="chk1" value="11" />
</td>
<td>
<span datafld="ID"></span>
</td>
<td>
<span datafld="name"></span>
</td>
<td>
<input type="checkbox" class="chk" /><input type="text" />
</td>
</tr>
</table>
...全文
459 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
志在千里 2012-10-25
  • 打赏
  • 举报
回复
多谢wyumening

(wyumening)我结贴。
志在千里 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
不用取这么麻烦吧,直接取dso2的xml值就可以啦!

至于在前台解析,还是后台解析自己顶!
[/Quote]
直接取xml怎样操作?每一行内还有checkbox呢,选中的行才存入数据库的。
wyumening 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
//执行数据库插入操作 这里的InsertText变成了"001,项目2" 这样的字符串,可以
//放到Insert语句中插入到数据库中
这样我的一行内是有很多列的不仅是“001,项目2”这两个还有好多个,像“001,项目2”这样的数据也要分开存的。在数据库里是两个字段。
[/Quote]
那可以改成string[] Parameter = data[i].Split(new char[]{','}); 然后在执行插入操作的时候遍历Parameter这个数组就行了
志在千里 2012-10-24
  • 打赏
  • 举报
回复
//执行数据库插入操作 这里的InsertText变成了"001,项目2" 这样的字符串,可以
//放到Insert语句中插入到数据库中
这样我的一行内是有很多列的不仅是“001,项目2”这两个还有好多个,像“001,项目2”这样的数据也要分开存的。在数据库里是两个字段。
wyumening 2012-10-24
  • 打赏
  • 举报
回复
在前台把字符串拼接成01103,005;01102,006;的格式,放到隐藏域中,然后在后台拆分
前台代码如下:
<form id="form1" runat="server">
<table id="flowtbl" datasrc="#dso2" class="table">
<thead>
<tr jquery1350481007593="6">
<th align="left">
<input class="all" type="checkbox">
步骤选择
</th>
<th>
步骤编号
</th>
<th>
步骤名称
</th>
<th>
是否审批
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">01101</span>
</td>
<td>
<span datafld="name">项目1</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="9"><input disabled type="text"
jquery1350481007593="8">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">01102</span>
</td>
<td>
<span datafld="name">项目2</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="11"><input disabled type="text"
jquery1350481007593="10">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">02101</span>
</td>
<td>
<span datafld="name">项目3</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="13"><input disabled type="text"
jquery1350481007593="12">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">02102</span>
</td>
<td>
<span datafld="name">项目4</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="15"><input disabled type="text"
jquery1350481007593="14">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">01103</span>
</td>
<td>
<span datafld="name">项目5</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="17"><input disabled type="text"
jquery1350481007593="16">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">01104</span>
</td>
<td>
<span datafld="name">项目6</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="19"><input disabled type="text"
jquery1350481007593="18">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">01105</span>
</td>
<td>
<span datafld="name">项目7</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="21"><input disabled type="text"
jquery1350481007593="20">
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<input class="chk1" value="11" type="checkbox">
</td>
<td>
<span datafld="ID">01106</span>
</td>
<td>
<span datafld="name">项目8</span>
</td>
<td>
<input class="chk" type="checkbox" jquery1350481007593="23"><input disabled type="text"
jquery1350481007593="22">
</td>
</tr>
</tbody>
</table>
<asp:Button Text="send" OnClientClick="bianli()" runat="server" /> <!-- 这里改成html控件也可以 -->
<asp:HiddenField runat="server" ID="hidvalue" />
</form>


 <script type="text/javascript">
function bianli() {
var hiddenvalue = "";
var returnvalue = "";
var tbl = document.getElementById("flowtbl");
var tbodys = tbl.tBodies;

for (var i = 0; i < tbodys.length; i++) {
var rows = tbodys[i].rows;
for (var j = 0; j < rows.length; j++) {
var cells = rows[j].cells;
var spans = rows[j].getElementsByTagName("span");
for (var t = 0; t < cells.length; t++) {
var inputs = cells[t].getElementsByTagName("input");
if (inputs.length > 0) {
if (inputs[j].type == "checkbox" && inputs[j].checked == true) {

var tdlist = cells[t].parentNode.childNodes;
for (var d = 0; d < tdlist.length; d++) {

var spans = tdlist[d].getElementsByTagName("span");
if (spans.length > 0) {
for (var k = 0; k < spans.length; k++) {
if (hiddenvalue == "") {
hiddenvalue += spans[k].innerHTML;
}
else {
if (hiddenvalue != "") {
hiddenvalue += "," + spans[k].innerHTML;
}
}




}

}
else {
continue;
}
}
hiddenvalue += ";";
returnvalue += hiddenvalue;
hiddenvalue = "";
}


}

}

}



}

var hidcontrol = document.getElementById("<% = hidvalue.ClientID%>");
hidcontrol.value = returnvalue;
}
</script>


aspx页面
 protected void Page_Load(object sender, EventArgs e)
{
if (hidvalue.Value != "")
{
string Data = hidvalue.Value;
string[] data = Data.Split(new char[] { ';' });
for (int i = 0; i < data.Length - 1; i++)
{
string InsertText = data[i].Replace(",", "','");
//执行数据库插入操作 这里的InsertText变成了"001,项目2" 这样的字符串,可以
//放到Insert语句中插入到数据库中

}
}

}
志在千里 2012-10-24
  • 打赏
  • 举报
回复
有路过的没?
志在千里 2012-10-24
  • 打赏
  • 举报
回复
路过的朋友不能回答的也请帮忙顶一下吧!!!多谢了。
yyf888yyf 2012-10-24
  • 打赏
  • 举报
回复
不用取这么麻烦吧,直接取dso2的xml值就可以啦!

至于在前台解析,还是后台解析自己顶!
志在千里 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
使用正则表达式分离数据,再提交。
[/Quote]
正则?能帮忙写一下吗?多谢“devmiao
devmiao 2012-10-23
  • 打赏
  • 举报
回复
使用正则表达式分离数据,再提交。

62,025

社区成员

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

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

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

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