我有一个下拉列表。我想将它的选定值添加到超链接查询字符串。如何使用< %%>从aspx文件本身执行此操作块?我的代码就像这样
<asp:DropDownList ID="ddlLanguage" runat="server" DataSourceID="ds" DataTextField="Langcode" DataValueField="LangKey" Width="200px"> </asp:DropDownList>
<% if (ddlLanguage.Items.Count>0) { %>
<asp:HyperLink ID="hlnk" NavigateUrl="abcd.aspx?lkey=1" runat="server" />
<% } %>
如何将选定的下拉列表值传递给hlnk的NavigateUrl。
请不要回答使用aspx.cs文件。我希望它只在同一条线上完成。
答案 0 :(得分:1)
要动态更新NavigateUrl
而不修改.cs文件,您可以为下拉列表编写客户端OnChange
事件,只更新输出的href
属性{ {1}}通过预先选定的值进行控制。
这可以使用jQuery轻松实现。这里有一些示例代码可以帮助您入门。
hlnk
或者,为了提高性能,您可以使用看起来像超链接的超链接重新定位到正确的URL,但使用JavaScript进行操作。这意味着网址只会更改一次,而不是每次更改。
$('.language-dropdown').change(function()
{
var newUrl = 'http://www.example.com/?id=' + $(this).val();
$('.hyperlink').attr('href', newUrl)
});
答案 1 :(得分:1)
您遇到的问题是操作发生在客户端,因此您需要在使用javascript进行下拉更改时调整链接的值(我在这里使用了jQuery)。
您可以实现基于jquery的函数来监视dd以进行更改,然后设置链接的URL。
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
...
<asp:DropDownList ID="ddlLanguage" runat="server" DataSourceID="ds" DataTextField="Langcode" DataValueField="LangKey" Width="200px"> </asp:DropDownList>
<% if (ddlLanguage.Items.Count>0) { %>
<a href="abcd.aspx?lkey=1" id="hlnk>Link to other location</a>
<% } %>
<script>
var ddId = '<%=this.ddlLanguage.ClientID %>'
$('#'+ddId).change(function () {
$('#hlnk').attr('href', 'abcd.aspx?lkey='+$(this).val());
});
</script>
...
</body>