Javascript ASP.NET中jQuery对列表框项的更改是不允许的
我有两个列表框。一个为空,五个选项中的一个为空。 我已经使用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 ()
<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]…]附加值,并将其插入隐藏字段中。例如,禁用任何可以执行此操作的操作。