<SELECT style="WIDTH: 245px; HEIGHT: 397px" size="24" id="selbefore" multiple runat="server" ondblclick="btnturnrightclick()">
function btnturnrightclick()
{
for(var i = Form1.selbefore.options.length -1;i >= 0 ;i--)
{
if(Form1.selbefore.options[i].selected)
{
var selOption = document.createElement("OPTION");
selOption.text = Form1.selbefore.options[Form1.selbefore.selectedIndex].text;
selOption.value = Form1.selend.options.length;
Form1.selend.add(selOption);
Form1.selbefore.remove(Form1.selbefore.selectedIndex);
}
}
}我用Jscript动态添加或删除列表框中的element,但在C#提交给数据库时还是未更改前的那几个,这是咋回事啊!请高手指教如何在后台如何正确操作用jscript更改后的element
function btnturnrightclick()
{
for(var i = Form1.selbefore.options.length -1;i >= 0 ;i--)
{
if(Form1.selbefore.options[i].selected)
{
var selOption = document.createElement("OPTION");
selOption.text = Form1.selbefore.options[Form1.selbefore.selectedIndex].text;
selOption.value = Form1.selend.options.length;
Form1.selend.add(selOption);
Form1.selbefore.remove(Form1.selbefore.selectedIndex);
}
}
}我用Jscript动态添加或删除列表框中的element,但在C#提交给数据库时还是未更改前的那几个,这是咋回事啊!请高手指教如何在后台如何正确操作用jscript更改后的element
能不能写具体点,先谢了
---------------------------
苦海无边 回头无岸
---------------------------
服务端利用的ViewState属性,将服务端的列表内容存储在一个Hidden元素中。在输出网页时候,服务端控件已经转化为客户端的网页元素。在输出之后,服务端的控件就已经消失了。客户端对这个输出后的网页元素内容进行编辑,在网页提交时,由动态Html规范(不清楚该如何称呼提交时的规范,姑且称为动态Html规范)会将网页中能够提交的元素的当前数据汇编成如下格式:Name1=xxx&Name2=xxx发回服务端。注意,这里发到服务端的数据仅仅为当前数据。例如:
一个下拉列表/列表框元素中有4项内容(不论是由服务端输出,还是由客户端加入)<Select Name="Sel1" ID="Sel1">
<Options>A</Options>
<Options>B</Options>
<Options>C</Options>
<Options>D</Options>
</Select>当前选择了B. 则由它组合的数据为 Sel1=B服务端也仅仅知道 Sel1=B,其他的A, C, D根本不认识。到了服务端后,服务端控件就会调用自己的OnInit(),从ViewState中将列表数据读出,又恢复了原服务端的数据(列表)。说了这一堆,不知道楼主是否明白:按照你的做法,不可能实现客户端改变列表,服务端就会存在相应的列表内容的功能。必须改变做法,由自己维护类似ViewState的内容。这样做会麻烦一点,但能够实现。方法可以说属于剑走偏锋!