Создать всплывающее окно с <asp: HyperLink>, который передает параметры - PullRequest
1 голос
/ 22 апреля 2009

Этот синтаксис HyperLink не работает для передачи параметров в небольшое всплывающее окно:

<asp:HyperLink ID="HyperLink2" runat="server" Text="Manage Related Items"
    NavigateUrl='<%# "editRelatedItems.aspx?" + "ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") %>'
    onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;)
    target="_blank" />

Похоже, тег <asp:HyperLink> не принимает "onclick". Любые идеи о том, как получить всплывающее окно, которое может получить эти параметры? Я использую C #, так что, возможно, есть способ построить строку NavigateURL в коде позади?

Спасибо за ваше понимание.

Ответы [ 7 ]

3 голосов
/ 22 апреля 2009

Из кода на стороне сервера вы можете сделать

HyperLink2.Attributes.Add("OnClick", "yourstuffhere");

, что позволит вам указать элементы OnClick.

Вы также можете установить NavigateUrl как что-то вроде "javascript: window.open ...", если хотите, опять же, это можно сделать из кода ниже.

также

Учитывая, что Гиперссылка является просто стандартным прогоном тега привязки мельницы, если вы выполняете всю эту обработку в приведенном ниже коде, может быть просто проще создать всю ссылку самостоятельно, чтобы избежать проблем.

1 голос
/ 22 апреля 2009
<asp:HyperLink 
     ID="HyperLink2" 
     runat="server" 
     Text="Manage Related Items"
     NavigateUrl="#"
     onClick='<%# "window.open('editRelatedItems.aspx" + 
                  "?ProductSID=" + Eval("ProductSID") + 
                  "&CollectionTypeID=" + Eval("CollectionTypeID")+ 
                  "&ProductTypeID=" + Eval("ProductTypeID") + 
                  ",'name','height=550, width=790,toolbar=no,
                  directories=no,status=no,
                  menubar=no,scrollbars=yes,resizable=no'); 
                  return false;%>'  
     Target="_blank" />

Это должно сработать, но я бы действительно создал метод javascript для вызова, который бы открывал окно.

<script type="text/javascript">
   function openRelatedItems(productSID, collectionTypeId, productTypeId) { 

       window.open('editRelatedItems.aspx" + 
                  "?ProductSID=" + productSID + 
                  "&CollectionTypeID=" + collectionTypeID + 
                  "&ProductTypeID=" + productTypeID + 
                  ",'name','height=550, width=790,toolbar=no,
                  directories=no,status=no,
                  menubar=no,scrollbars=yes,resizable=no'); 

   }
</script>
1 голос
/ 22 апреля 2009

При использовании onclick в вашем коде отсутствует закрывающая кавычка " и имеется дополнительная скобка ). Это может быть вашей проблемой.

onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;"

Я обнаружил, что всплывающие окна javascript плохо воспроизводятся с ASP:HyperLink; Попробуйте создать ссылку с помощью обычного тега привязки:

<a id="HyperLink2" 
     runat="server" 
     NavigateUrl='<%# "editRelatedItems.aspx?ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") %>'  
     onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;" 
     Target="_blank">
Manage Related Items
</a>
1 голос
/ 22 апреля 2009

Вам нужен серверный контроль гиперссылки? Если нет, я бы порекомендовал просто использовать стандартный HTML-тег привязки или, если вам нужно, чтобы он отображался динамически, просто чтобы сгенерировать его в серверной части с использованием литерального тега и записать в него разметку (включая onclick). Вопрос, который вам нужно задать себе: «Вы чувствуете себя счастливчиком?» и «Нужен ли серверный элемент управления?»

Если вы не знакомы с ним, немного изучите событие ItemDataBound.

Код ключа для помещения в событие ItemDistBound вашего DataList:

Dim lit as Literal = CType(e.Item.FindControl("Literal1"), Literal)

lit.Text = "<a onclick='YOURJAVASCRIPT' href='#'>YOUR TEXT</a>"

Это ни в коем случае не весь код, который вы должны добавить в свое мероприятие, как я уже сказал, исследовать, что может предложить событие, и идти оттуда.

0 голосов
/ 26 ноября 2013
<asp:HyperLink 
     ID="HyperLink2" 
     runat="server" 
     Text="Manage Related Items"
     NavigateUrl="#"
     onClick='<%# "window.open('editRelatedItems.aspx" + 
                  "?ProductSID=" + Eval("ProductSID") + 
                  "&CollectionTypeID=" + Eval("CollectionTypeID")+ 
                  "&ProductTypeID=" + Eval("ProductTypeID") + 
                  ",'name','height=550, width=790,toolbar=no,
                  directories=no,status=no,
                  menubar=no,scrollbars=yes,resizable=no'); 
                  return false;%>'  
     Target="_blank" />

где вы закрыли "после запуска значения URL. Этот код показывает ошибку, тег сервера не подтвержден

0 голосов
/ 22 апреля 2009

Используйте OnClientClick вместо OnClick.

0 голосов
/ 22 апреля 2009

NavigateUrl переопределяет событие onclick тега 'a'.

Вы хотите установить целевой атрибут и отбросить клик

http://www.w3schools.com/tags/tag_a.asp

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