<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

解决方案 »

  1.   

    hdt(倦怠)
    能不能写具体点,先谢了
      

  2.   

    你这样前台js改控件 后台直接调用是无法知道其改动什么的你要么用服务器控件 要么request
    ---------------------------
    苦海无边 回头无岸
    ---------------------------
      

  3.   

    服务端的控件和客户端的网页元素实际上是2个东西。
    服务端利用的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的内容。这样做会麻烦一点,但能够实现。方法可以说属于剑走偏锋!
      

  4.   

    明白了,我弄了个客户端的隐藏文本框解决了这个问题,呵呵.也不用维护viewState