我需要从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');"
当然,不起作用的是附加&lt;%#Eval ...%&gt;用于设置查询字符串变量的部分。
有什么建议吗?或者有更好的方法来实现相同的结果吗?
答案 0 :(得分:13)
我相信这样做的方法是
onClientClick=<%# string.Format("window.open('PubsOrderDetails.aspx?OrderId={0}',scrollbars=yes,resizable=yes, width=350, height=550);", Eval("order_id")) %>
答案 1 :(得分:2)
我喜欢@ AviewAnew的建议,不过你也可以通过连接和事件连接到网格视图ItemDataBound事件,从代码隐藏中写出来。然后,您可以在事件参数上使用FindControl方法获取对按钮的引用,并将 onclick 属性设置为window.open语句。
答案 2 :(得分:2)
在代码隐藏中执行此操作。只需使用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