gpt4 book ai didi

asp.net - 使用 ASP.NET 中的下拉列表中修改后的查询字符串进行回发

转载 作者:行者123 更新时间:2023-12-02 00:23:15 25 4
gpt4 key购买 nike

我的 asp.net 页面将根据用户选择的报告呈现不同的控件,例如有些报告需要 5 个下拉菜单,有些需要两个复选框和 6 个下拉菜单)。

他们可以使用两种方法选择报告。在查询字符串中使用 SelectedReport=MyReport,或者从下拉列表中选择它。他们的常见情况是进入查询字符串中包含 SelectedReport 的页面,然后更改在下拉列表中选择的报告。

我的问题是,是否可以使下拉列表在选择时修改查询字符串。因此,我希望在查询字符串和要回发的页面中包含 SelectedReport=MyNewReport

目前,它只是执行正常的回发,这会将 SelectedReport=MyReport 保留在查询字符串中,即使它不是当前选定的报表。

编辑:我还需要保留 ViewState。

我尝试在下拉列表的事件处理程序中执行 Server.Transfer(Request.Path + "?SelectedReport="+ SelectedReport, true) ,这在功能上是有效的,不幸的是,因为它是使用 Server.Transfer(以保留 ViewState)而不是 Response.Redirect,URL 滞后于显示的内容。

也许我问的是不可能的事,或者是以完全错误的方式来解决它。

@Craig QueryString 集合是只读的,无法修改。
@Jason 那太好了,除非我会失去 ViewState,不是吗? (抱歉,我在看到您的回复后添加了这一点)。

最佳答案

您需要关闭下拉菜单上的自动回发 - 然后,您需要连接一些将接管该角色的 javascript 代码 - 在下拉菜单的 onchange 事件的事件处理程序代码中,您将创建一个基于以下内容的 URL从下拉列表中选择当前选定的值,然后使用 JavaScript 请求该页面。

编辑:这里有一些快速而肮脏的代码,表明什么可以做到这一点:

<script>
function changeReport(dropDownList) {
var selectedReport = dropDownList.options[dropDownList.selectedIndex];
window.location = ("scratch.htm?SelectedReport=" + selectedReport.value);
}
</script>

<select id="SelectedReport" onchange="changeReport(this)">
<option value="foo">foo</option>
<option value="bar">bar</option>
<option value="baz">baz</option>
</select>

显然,您需要做更多的事情,但这确实有效,并且会给您带来您想要的东西。我建议使用 JavaScript 工具包(我使用 MochiKit,但并不适合所有人)来完成一些较困难的工作 - 如果可能的话,使用不显眼的 JavaScript 技术(与我在本示例中使用的不同)。

@Ray:你使用ViewState?!我很抱歉。 :P 为什么在这种情况下,你需要保留它。请告诉?

关于asp.net - 使用 ASP.NET 中的下拉列表中修改后的查询字符串进行回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com