在OnClientClick代码中包含eval / bind值

时间:2008-09-19 14:37:22

标签: asp.net javascript visual-studio

我需要从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;用于设置查询字符串变量的部分。

有什么建议吗?或者有更好的方法来实现相同的结果吗?

3 个答案:

答案 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