jquery - ASP.Net -- jQuery 填充列表后 <select> 项目没有被发回

标签 jquery listbox asp.net-2.0 postback

我有一个 ASP.Net ListBox,我尝试使用以下代码片段通过 jQuery 填充它:

    $("#MyList_btnAddAll").click(function(e) {
    e.preventDefault();
    $('#MyList_lstAll option').appendTo('#MyList_lstSelected');
});

该代码实际上有两个列表框,一个是“源”,另一个是“目标”。正如您在上面所知道的,ListBox 是 MyList_lstAll 和 MyList_lstSelected。正如您所期望的那样,它们在浏览器中呈现为元素。

jQuery 运行良好,项目从一个列表框移动到另一个列表框,DOM 已更新,但是当我发布页面时,回发并不表明列表框有任何更改。我知道存在涉及 jQuery 和 ASP.Net 回发的问题,但是有人可以指导我一下可能发生的情况以及如何让它工作吗?

[编辑]

根据要求,这里有更多 ASP.Net 和 HTML 的结果。下面是保存列表框和按钮的 ascx 控件中的声明:

 <GLP:ListBox ID="lstAll" CssClass="LIST_BOX_MEDIUM" runat="server" SelectionMode="Multiple"/>

<asp:LinkButton ID="lnkAddAll2" CssClass="LIST_SELECT" runat="server" OnClick="btnAddAll_Click"/>

<GLP:ListBox ID="lstSelected" CssClass="LIST_BOX_MEDIUM" runat="server" SelectionMode="Multiple"/>

生成的 HTML:

<select class="LIST_BOX_MEDIUM" id="MyList_lstAll" multiple="multiple" name="MyList:lstAll" size="4">
 <option value="641">Item1</option><option value="598">Item2</option>
</select>

<input type="submit" class="BUTTON_SMALL_N0_IMAGE" id="MyList_btnAddAll" value="Add All" name="MyList:btnAddAll" style="color: rgb(0, 0, 0);">

<select class="LIST_BOX_MEDIUM" id="MyList_lstSelected" multiple="multiple" name="MyList:lstSelected" size="4">
 <option value="642">Item3</option><option value="599">Item4</option>
</select>

我知道 jQuery/ListBox 项目修改不会反射(reflect)在 ViewState 中,但由于在发布页面时它们位于 DOM 中,它们不会包含在回发数据中,然后由各自的控件拾取吗?

最佳答案

IIRC,由于 ASP.Net 在回发时列表框中所期望的内容,您无法使其正常工作。我过去使用的一种方法是使用 runat="server"创建一个隐藏的输入字段,并在其中填充选定的 ID,以分号分隔。

隐藏的输入值将在回发时可用。

关于jquery - ASP.Net -- jQuery 填充列表后 <select> 项目没有被发回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587167/

相关文章:

javascript - Wordpress 子主题模板不适用于外部 jquery/javascript 函数

c# - 无法从列表框中删除项目

c# - 如何在列表框中列出 newtonsoft Jtoken 或 JObjects 子项

jquery - 将 ASP.NET Web 表单发送到 JQuery 自动完成的最佳实践

.net - ASP.NET 2.0 网站可以引用 WCF Web 服务吗?

c# - 我可以仅按文件名查找文件吗(即扩展名未知)

javascript - 只要不是 <a> 标签,就可以在单击某个区域时使用react

javascript - 使用其他页面中的 'href' (到达)取消隐藏特定 div

javascript - JSHint - ^ 'concise methods' 在 ES6 中可用

c# - 获取列表框中所选项目的值作为字符串