再求次用JS操作ListBox

wfcfan 2007-05-15 10:43:08
上次孟老大的那个js不是很好用,用在asp.net控件上有时候还会报错,
请大家帮帮我

两个listbox可以互移(多项)
...全文
297 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
garybo 2007-05-18
  • 打赏
  • 举报
回复
纯粹用js代码来互相移动listbox不能提交到后台的。

最好用个隐藏控件来保存是不是双击了listbox的item,然后在服务器端处理互移。
关键代码

隐藏控件代码:
<input id="Dbclickflag" type="hidden" value="false" name="Dbclickflag" runat="server"></td>
JAVASCRIPT:Dbclickflag是隐藏控件的clientid
function listbox_ondblclick(Dbclickflag){
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
Dbclickflag.value="true";
theForm.submit();
}

然后在后台页面里面为listbox加上一个属性
listbox.Attributes.Add("onDblClick", "listbox_ondblclick("+this.Dbclickflag.ClientID+")");

每次在page_load的if(IsPostBack)里面做一下判断,如果Dbclickflag的value是true,说明双击了listbox,然后做移动
KKND2006 2007-05-15
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> </TITLE>
<script language="javascript">
function Change(inObj1,inObj2)
{
var CtlBox1 = document.all.item(inObj1);
var CtlBox2 = document.all.item(inObj2);

if(CtlBox2.selectedIndex < 0)
{
return;
}
CtlBox1.appendChild(CtlBox2.options(CtlBox2.selectedIndex));
}

function box3_onchage()
{
var CtlBox = document.all.item("box3");
window.status = CtlBox.options(CtlBox.selectedIndex).innerText;
}

function ClearSelect()
{
var CtlBox = document.all.item("box3");

while(CtlBox.options.length > 0)
{
alert(CtlBox.options(CtlBox.selectedIndex).title);
CtlBox.options.remove(0);
}
}

function AddAll()
{
var CtlBox1 = document.all.item("box1");
var CtlBox2 = document.all.item("box2");

while(CtlBox1.options.length > 0)
{
CtlBox2.appendChild(CtlBox1.options(0));
}
}
</script>
<BODY>
<SELECT NAME="box1" size="6" multiple="multiple" ondblclick="Change('box2','box1');">
<OPTION value="a1">a1</OPTION>
<OPTION value="a2">a2</OPTION>
<OPTION>a3</OPTION>
<OPTION>a4</OPTION>
<OPTION>a5</OPTION>
<OPTION>a6</OPTION>
</SELECT>

<INPUT TYPE="button" onclick="AddAll();" value="AddAll" title="AddAll">

<SELECT id="box2" size="6" multiple="multiple" ondblclick="Change('box1','box2');">
</SELECT>

<SELECT NAME="box3" size="1" onchange="box3_onchage();" title="aaa">
<OPTION title="ca1">c1</OPTION>
<OPTION title="ca2">c2</OPTION>
<OPTION title="ca3">c3</OPTION>
<OPTION title="ca4">c4</OPTION>
<OPTION title="ca5">c5</OPTION>
<OPTION title="ca6">c6</OPTION>
</SELECT>

<INPUT TYPE="button" onclick="ClearSelect();" value="Clear" title="aaa">
</BODY>
</HTML>
seedling_lq 2007-05-15
  • 打赏
  • 举报
回复
<script language="javascript">
var listbox1 = null;
var listbox2 = null;

function window.onload()
{
listbox1 = document.getElementById("ListBox1");
listbox2 = document.getElementById("ListBox2");
}

function add()
{
if(listbox1.selectedIndex == -1)
{
window.alert('请先选择ListBox1数据项!');
return;
}
listbox2.options[listbox2.length] = new Option(listbox1.options [listbox1.selectedIndex].text,listbox1.options[listbox1.selectedIndex].value);
listbox1.options[listbox1.selectedIndex] = null;
}

function addall()
{
var init_index = listbox2.length;
var count = listbox1.length;
for(var i=0;i<count;i++)
{
var index = init_index +i;
listbox2.options[index] = new Option(listbox1.options [0].text,listbox1.options[0].value);
listbox1.options[0] = null;
}
}
</script>

限于篇幅,这里只贴出添加和全部添加代码
移除可以类推,看着改吧

62,046

社区成员

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

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

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

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