我一直在摆弄这个问题很长一段时间,因为我无法将DropDownList的值传递给链接按钮。 Eval似乎根本不起作用。 这是代码:
<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl='<%# string.Format(~/DataView.aspx?id=) + Eval(DropDownList1.SelectedValue) %>' Text="New ECRS"></asp:LinkButton>
当我运行上面的代码时,链接按钮不起作用,并且没有页面重定向。但我在很多论坛上都看到人们将上述代码作为答案。难道我做错了什么?在此先感谢:)
答案 0 :(得分:3)
您可以在后面的代码中使用Response.Redirect:
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton_Click" Text="New ECRS"></asp:LinkButton>
在您的代码隐藏中:
void LinkButton_Click(Object sender, EventArgs
{
Response.Redirect("~/DataView.aspx?id=" + DropDownList1.SelectedValue, true);
}
答案 1 :(得分:1)
LinkButton旨在对您的网页进行回发。听起来您想链接到新页面,在这种情况下您应该只使用HyperLink。你的PostBackUrl内容也有点奇怪:
<asp:HyperLink NavigateUrl='<%# string.Format("~/DataView.aspx?id={0}", DropDownList1.SelectedValue) %>' Text="Click here" />
另外,不要忘记DataBind控件或页面,否则&lt;%#%&gt;部分什么都不做。
答案 2 :(得分:1)
尝试使用Jquery。请参阅下面的代码。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#<%=DropDownList1.ClientID%>').bind('change', function(e) {
$('#<%=HyperLink1.ClientID%>').attr("href", "DataView.aspx?id=" + $(this).val())
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Selected="True" Text="One" Value="One"> </asp:ListItem>
<asp:ListItem Text="Two" Value="Two"> </asp:ListItem>
</asp:DropDownList>
<asp:HyperLink ID="HyperLink1" NavigateUrl="DataView.aspx?id=One" runat="server">New ECRS</asp:HyperLink>
</div>
</form>
</body>
</html>