在OnClientClick代码中包含评估/绑定值
时间:2020-03-06 14:26:13 来源:igfitidea点击:
我需要从gridview(VS 2005/2008)打开一个弹出详细信息窗口。我想做的是在我的TemplateColumn的标记中有一个asp:Button控件,有点像这样:
<asp:Button ID="btnShowDetails" runat="server" CausesValidation="false" CommandName="Details" Text="Order Details" onClientClick="window.open('PubsOrderDetails.aspx?OrderId=<%# Eval("order_id") %>', '','scrollbars=yes,resizable=yes, width=350, height=550');"
当然,不起作用的是添加<%Eval ...%>部分以设置查询字符串变量。
有什么建议?还是有更好的方法来达到相同的结果?
解决方案
我相信这样做的方法是
onClientClick=<%# string.Format("window.open('PubsOrderDetails.aspx?OrderId={0}',scrollbars=yes,resizable=yes, width=350, height=550);", Eval("order_id")) %>
我喜欢@AviewAnew的建议,尽管我们也可以将代码和事件连接到网格视图的ItemDataBound事件中,然后从代码中编写。然后,我们将在事件args上使用FindControl方法来获取对按钮的引用,并将onclick属性设置为window.open语句。
在后面的代码中执行此操作。只需为gridview_RowDataBound使用事件处理程序即可。 (我的示例使用ID为" gvBoxes"的gridview。
Private Sub gvBoxes_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvBoxes.RowDataBound Select Case e.Row.RowType Case DataControlRowType.DataRow Dim btn As Button = e.Row.FindControl("btnShowDetails") btn.OnClientClick = "window.open('PubsOrderDetails.aspx?OrderId=" & DataItem.Eval("OrderId") & "','','scrollbars=yes,resizable=yes, width=350, height=550');" End Select End Sub