Javascript ASP.NET中jQuery对列表框项的更改是不允许的

Javascript ASP.NET中jQuery对列表框项的更改是不允许的,javascript,c#,jquery,asp.net,Javascript,C#,Jquery,Asp.net,我有两个列表框。一个为空,五个选项中的一个为空。 我已经使用jQuery从列表框中传输选项。 最后我想读第二个选项列表框是空的 我使用的代码是: <html> <head> <script src="http://code.jquery.com/jquery-2.1.3.min.js"></script> <script type="text/javascript"> $(document).ready(function ()

我有两个列表框。一个为空,五个选项中的一个为空。 我已经使用jQuery从列表框中传输选项。 最后我想读第二个选项列表框是空的

我使用的代码是:

<html>
<head>
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#<%=lbleft.ClientID %>').on('dblclick', 'option', function () {
            var element = $("#lbleft option:selected");
            var value = element.val();
            var text = element.text();
            element.remove();

            $("#<%=lbright.ClientID %>").append('<option value="' + value + '">' + text + '</option>');
        });
        $('#<%=lbright.ClientID %>').on('dblclick', 'option', function () {
            var element = $("#lbright option:selected");
            var value = element.val();
            var text = element.text();
            element.remove();

            $("#<%=lbleft.ClientID %>").append('<option value="' + value + '">' + text + '</option>');
        });
    });
</script>
<style type="text/css">
.auto-style1 {
    text-align: center;
}
</style>
</head>
<body>
    <div class="auto-style1">
        <form id="Form1" runat="server" ViewStateMode="Disabled">
            <asp:ListBox ID="lbleft" runat="server" DataTextField="Text" DataValueField="Value"></asp:ListBox>
            <asp:ListBox ID="lbright" runat="server" ViewStateMode="Disabled"></asp:ListBox>
            <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
        </form>
    </div>
</body>

</html>
和隐藏代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable dtload = new DataTable();
        dtload.Columns.Add("Text", typeof(string));
        dtload.Columns.Add("Value", typeof(string));
        dtload.Rows.Add("Option1", "1;a;!");
        dtload.Rows.Add("Option2", "2;b;@");
        dtload.Rows.Add("Option3", "3;c;#");
        dtload.Rows.Add("Option4", "4;d;$");
        dtload.Rows.Add("Option5", "5;e;%");

        lbleft.DataSource = dtload;
        lbleft.DataBind();
    }
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    for (int count = 0; count <= Convert.ToInt32(lbright.Items.Count); count++)
    {
        string str = null;
        string[] strArr = null;
        int count2 = 0;
        str = lbright.Items[count].ToString();
        char[] splitchar = { ';' };
        strArr = str.Split(splitchar);
        for (count2 = 0; count2 <= strArr.Length - 1; count++)
        {
            Response.Write(
                "Option" + count + ":<br />" +
                "   " + "Value" + count2 + ":" + strArr[count]
                );
        }
    }
} 

我认为问题在于您禁用了ViewStateMode,将其删除后,列表框在提交后不会为空。

我不清楚您真正的要求是什么。改进你的问题,使之更具体。问题是什么?有错误信息吗?请正确解释。问题是,在更改选项后,按Submit II,因为其第一个列表框为空。两个列表框项目,如first,我想我了解您想要什么。您希望能够在双击时使用jquery将项目从第一个框移动到第二个框。之后,您希望将结果发布回.net页面。为此,您可以在页面上使用两个隐藏字段,一个用于第一个列表框中的项目,另一个用于第二个列表框中的项目。在回调btnSubmit_Click中,您需要检查隐藏字段的值。这很正确,但选项很多,我们还需要对每个选项进行赋值。您可以使用类似json格式的分隔符[[name1:value1]、[name2:value2]…]附加值,并将其插入隐藏字段中。例如,禁用任何可以执行此操作的操作。