两个listbox,实现选项左右移动(jquery实现)。但是在保存时提示:回发或回调参数无效。经过网上查询估计:每个asp.net控件都有个隐藏域保存它的值。页面中直接用jquery把一个选项直接从listbox1移动到listbox2后,隐藏域的值与listbox本身不对应了。所以报错。
请教有经验的朋友们,大家是如何处理这个问题的。如果通过别的ajax方法就算了,jquery实在是好用,不想放弃。我想这应该是jquery+aspx的一个设置技巧,希望大家多多指教。
请教有经验的朋友们,大家是如何处理这个问题的。如果通过别的ajax方法就算了,jquery实在是好用,不想放弃。我想这应该是jquery+aspx的一个设置技巧,希望大家多多指教。
//左移或右移
function MoveOption(fromSel,toSel)
{
var fromOp=fromSel.options;
var toOp=toSel.options;
var selectedFlag=false;
for(var i=0;i<fromOp.length;i++)
{
if(fromOp[i].selected)
{
selectedFlag=true;
var selectedOp=document.createElement("option");
selectedOp.text=fromOp[i].text;
selectedOp.value=fromOp[i].value;
toSelLength=toOp.length;
toSel.options.add(selectedOp,toSelLength);
fromSel.options.remove(i);
i--;
}
}
if(!selectedFlag)
{
alert("请选择一项!");
return;
}
}
{
var sc = this.Page.Form.Attributes["onsubmit"];
if (sc == null)
sc = "return true;";
this.Page.Form.Attributes["onsubmit"] =
string.Format("process({0},{1},{2},{3});",
ListBox1.ClientID, HiddelField1.ClientID,
ListBox2.ClientID, HiddelField2.ClientID)
+ sc; //调用客户端方法process,然后调用原来的onsubmit。
}
这样asp.net设计时就没有自相矛盾。
在客户端方法process,参数中已经引用四个客户端元素,在你处理完之后,可以将<select />的value属性仍然恢复为最初的值。在后台,处理了两个HiddenField的ValueChanged事件之后,自然会重新设置两个ListBox的Item。