在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