Включение значений eval / bind в код OnClientClick - PullRequest
7 голосов
/ 19 сентября 2008

Мне нужно открыть всплывающее окно с подробностями из сетки (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 ...%> для установки переменной строки запроса.

Есть предложения? Или есть гораздо лучший способ достижения того же результата?

Ответы [ 3 ]

13 голосов
/ 19 сентября 2008

Я верю, что способ сделать это

onClientClick=<%# string.Format("window.open('PubsOrderDetails.aspx?OrderId={0}',scrollbars=yes,resizable=yes, width=350, height=550);", Eval("order_id")) %>
2 голосов
/ 19 сентября 2008

Сделайте это в коде позади. Просто используйте обработчик событий для gridview_RowDataBound. (Мой пример использует gridview с идентификатором «gvBoxes».

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
2 голосов
/ 19 сентября 2008

Мне нравится предложение @ AviewAnew , хотя вы также можете просто записать это из кода, подключив и событие к сетке, просматривая событие ItemDataBound. Затем вы используете метод FindControl для аргументов события, которые вы получаете, чтобы получить ссылку на вашу кнопку, и задаете атрибут onclick для вашего оператора window.open.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...