如何在JSP页面中实现像C/S结构的多行修改,100分相送!!!!!

bitou 2004-08-04 10:21:53
用的是struts 架构,weblogic 8 + DB2 7.2
...全文
179 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
BillyW 2004-08-05
  • 打赏
  • 举报
回复
我给你这个代码。可以考虑配合一下struts的actionform功能

把下面的代码放到一个HTML文件中:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>测试修改表格</TITLE>
<STYLE>
/*提示层的样式*/
div
{
BORDER-RIGHT: #80c144 1px solid;
BORDER-TOP: #80c144 1px solid;
VISIBILITY: hidden;
BORDER-LEFT: #80c144 1px solid;
CURSOR: default;
LINE-HEIGHT: 20px;
BORDER-BOTTOM: #80c144 1px solid;
FONT-FAMILY: 宋体;
font-size:12px;
POSITION: absolute;
BACKGROUND-COLOR: #f6f6f6;
TOP:30px;
LEFT:30px;
}
/*tr的样式*/
tr
{
font-family: "宋体";
color: #000000;
background-color: #C1DBF5;
font-size: 12px
}
/*table脚注样式*/
.TrFoot
{
FONT-SIZE: 12px;
font-family:"宋体", "Verdana", "Arial";
BACKGROUND-COLOR: #6699CC;
COLOR:#FFFFFF;
height: 25;
}
/*trhead属性*/
.TrHead
{
FONT-SIZE: 13px;
font-family:"宋体", "Verdana", "Arial";
BACKGROUND-COLOR: #77AADD;
COLOR:#FFFFFF;
height: 25;
}
/*文本框样式*/
INPUT
{
BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-BOTTOM: 1px solid;
FONT-SIZE: 12px;
FONT-FAMILY: "宋体","Verdana";
color: #000000;
BACKGROUND-COLOR: #E9EFF5;
}
/*button样式*/
button
{
BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;
BACKGROUND-COLOR: #D5E4F3;
CURSOR: hand;
FONT-SIZE:12px;
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-BOTTOM: 1px solid;
COLOR: #000000;
}
</STYLE>
</HEAD>
<BODY>
<SCRIPT language = "JavaScript">
<!--全局变量
//标志位,值为false代表未打开一个编辑框,值为true为已经打开一个编辑框开始编辑
var editer_table_cell_tag = false;
//开启编辑功能标志,值为true时为允许编辑
var run_edit_flag = false;
//-->
</SCRIPT>

<SCRIPT language = "JavaScript">
<!--
/**
* 编辑表格函数
* 单击某个单元格可以对里面的内容进行自由编辑
* @para tableID 为要编辑的table的id
* @para noEdiID 为不要编辑的td的ID,比如说table的标题
* 可以写为<TD id="no_editer">自由编辑表格</TD>
* 此时该td不可编辑
*/
function editerTableCell(tableId,noEdiId)
{
var tdObject = event.srcElement;
var tObject = ((tdObject.parentNode).parentNode).parentNode;
if(tObject.id == tableId &&tdObject.id != noEdiId&&editer_table_cell_tag == false && run_edit_flag == true)
{
tdObject.innerHTML = "<input type=text id=edit_table_txt name=edit_table_txt value="+tdObject.innerText+" size='15' onKeyDown='enterToTab()'> <input type=button value=' 确定 ' onclick='certainEdit()'>";
edit_table_txt.focus();
edit_table_txt.select();
editer_table_cell_tag = true;
//修改按钮提示信息
editTip.innerText = "请先点确定按钮确认修改!";
}
else
{
return false;
}
}

/**
* 确定修改
*/
function certainEdit()
{
var bObject = event.srcElement;
var tdObject = bObject.parentNode;
var txtObject = tdObject.firstChild;
tdObject.innerHTML = txtObject.value;
//代表编辑框已经关闭
editer_table_cell_tag = false;
//修改按钮提示信息
editTip.innerText = "请单击某个单元格进行编辑!";
}

function enterToTab()
{
if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
&& event.keyCode == 13)
{
event.keyCode = 9;
}
}

/**
* 控制是否编辑
*/
function editStart()
{
if(event.srcElement.value == "开始编辑")
{
event.srcElement.value = "编辑完成";
run_edit_flag = true;
}
else
{
//如果当前没有编辑框,则编辑成功,否则,无法提交
//必须按确定按钮后才能正常提交
if(editer_table_cell_tag == false)
{
alert("编辑成功结束!");
event.srcElement.value = "开始编辑";
run_edit_flag = false;
}
}
}

/**
* 根据不同的按钮提供不同的提示信息
*/
function showTip()
{
if(event.srcElement.value == "编辑完成")
{
editTip.style.top = event.y + 15;
editTip.style.left = event.x + 12;
editTip.style.visibility = "visible";
}
else
{
editTip.style.visibility = "hidden";
}
}
-->
</SCRIPT>
<TABLE id="editer_table" width="100%" align="center"
onclick="editerTableCell('editer_table','no_editer')">
<TR class="TrHead">
<TD colspan="3" align="center" id="no_editer">自由编辑表格</TD>
</TR>
<TR>
<TD width="33%">单击开始编辑按钮,然后点击各单元格编辑</TD>
<TD width="33%">2</TD>
<TD width="33%">3</TD>
</TR>
<TR>
<TD width="33%">4</TD>
<TD width="33%">5</TD>
<TD width="33%">6</TD>
</TR>
<TR>
<TD width="33%">one</TD>
<TD width="33%">two</TD>
<TD width="33%">three</TD>
</TR>
<TR>
<TD width="33%">four</TD>
<TD width="33%">five</TD>
<TD width="33%">six</TD>
</TR>
<TR class="TrFoot">
<TD colspan="3" align="center" id="no_editer">
<INPUT type="button" class="bt" value="开始编辑" onClick="editStart()" onMouseOver="showTip()" onMouseMove="showTip()" onMouseOut="editTip.style.visibility = 'hidden';">
</TD>
</TR>
</TABLE>
</BODY>
<DIV id="editTip">请单击某个单元格进行编辑!</DIV>
</HTML>
charmguy 2004-08-05
  • 打赏
  • 举报
回复
用request.getParameterValues()返回同一个input的值的String[],循环着将字段放到Bean里,再将Bean放到Collection里,接着调用DAO的方法Update,比如:

Bean bean = new Bean();
Collection beans = new ArrayList();
String[] ids = request.getParameterValues("id");
String[] names = request.getParameterValues("name");
for (int i = 0; i < ids.length; i++)
{
bean.setId(ids[i]);
bean.setName(names[i]);
beans.add(bean);
}
DAO.updateBeans(beans);

在updateBeans方法里可以用Statement的Patch方式执行SQL,

抛砖引玉,共同关注!
zzack 2004-08-05
  • 打赏
  • 举报
回复
我觉得只有用集合保存中间数据,并在集合中设定一个是否更新标志,最后一次提交到服务器用循环将数据更新。
yangwlqi 2004-08-05
  • 打赏
  • 举报
回复
用集合存储表单数据,写个类从集合中循环取出数据并修改数据库
bitou 2004-08-05
  • 打赏
  • 举报
回复
楼上说的是这个意思,但不知有没有什么好的解决办法
bug0303 2004-08-05
  • 打赏
  • 举报
回复
在你的页面中事先放上一大堆文本框,其中的value就是你从数据库中提取的数据,同时使用一大堆隐藏域保存每条记录的ID。提交时,根据隐藏域中的id,在数据表中找到相应记录,再把这个id对应的那一行文本框数据update进去。是这个意思吗?
junmayang 2004-08-05
  • 打赏
  • 举报
回复
何为多行修改?
bitou 2004-08-05
  • 打赏
  • 举报
回复
问题没解决啊,我指的不是多选,而是多条记录的在同一个页面中修改,然后提交,全部保存。我真晕了,大家都看不懂我的题目
fanciex 2004-08-04
  • 打赏
  • 举报
回复
你先产生命名有规律的元件如C1_0,C1_1...C1_n
C2_0,C2_1...
,然后统统传到后端,既然命名有规律自然用循环都能取得到,然后再一条一条的update好了
哈哈,比较麻烦...
fanciex 2004-08-04
  • 打赏
  • 举报
回复
sorry,发错地方了
bitou 2004-08-04
  • 打赏
  • 举报
回复
也许我题目说得不够清楚,因为大多数情况下我们修改记录时,都是一次修改一条记录,但现在有没有办法在列表状态下一次修改多条记录,然后保存,如同C/S结构下,在列表中列出了很多记录,可以修改任意多条记录中的数据,然后全部保存。
fanciex 2004-08-04
  • 打赏
  • 举报
回复
http://jakarta.apache.org/poi/index.html

Jakarta POI - Java API To Access Microsoft Format Files
scvzhang 2004-08-04
  • 打赏
  • 举报
回复
不懂
bitou 2004-08-04
  • 打赏
  • 举报
回复
能给出源码更好,

ouyangchun@163.com

bug0303 2004-08-04
  • 打赏
  • 举报
回复
在显示你的列表信息时就使用HTML组织checkbox呀(name需要相同),里面的value可以是记录的主键ID。用户选中提交后,formbean里可以得到checkbox的域值数组。
TinyJimmy 2004-08-04
  • 打赏
  • 举报
回复
可以, 写一大堆JS, 用JS数组保存临时数据, 保存时再取出提交. 不过这样不好扩展

不过既然使用B/S, 和C/S的设计就有不同了. 试一试改变你的设计思路?
jokerjava 2004-08-04
  • 打赏
  • 举报
回复
checkbox和select都可以多选
bitou 2004-08-04
  • 打赏
  • 举报
回复
用的是struts结构,有点不太方便,有没有其它方法呢?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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