2016-04-20 5 views
0

У меня есть Panel с ModalPopupExtender, который отображает данные DataList. Разметка aspx выглядит следующим образом.С javascript получить текст метки в div, завернутый в LinkButton в datalist?

По существу, пользователь нажимает на ButtonOpenPopup и отображается Panel с каталогом. Затем пользователь нажимает на элемент datalist, который представляет RoomNUm.

Как вы можете видеть, есть также TextBox под названием TextBoxNewRoomNum. Цель этого TextBox состоит в том, чтобы отобразить RoomNum, который был нажат в DataList.

Проблема заключается в том, что это необходимо сделать без веб-формы, выполняющей любые postback. Я пробовал разные вызовы функций с OnClientClick, но ничего не сработало. Чаще всего панель исчезает с щелчком.

Мой вопрос: Как перенести значение RoomNum элемента данных с кликом по ссылке в TextBox TextBoxNewRoomNum? Я не предпочитаю jquery.

Любая помощь приветствуется. Спасибо.

<ajax:ToolkitScriptManager ID="ScriptManager1" runat="server"></ajax:ToolkitScriptManager> 
<ajax:ModalPopupExtender ID="ModalPopupExtenderRoom" runat="server" PopupControlID="PanelRoomDetail" 
TargetControlID="btnDummy"> 
</ajax:ModalPopupExtender> 
<asp:Button ID="ButtonOpenPopup" runat="server" Text="PopUp" onclick="ButtonOpenPopup_Click" /> 

<asp:Button ID="btnDummy" runat="server" Text="PopUp" style = "display:none" /> 

<asp:Panel ID="PanelRoomDetail" runat="server" style="width:600px; height: 600px;display:none"> 
    <div> 
     <asp:DataList ID="DataListFloorThumb" runat="server" RepeatColumns="5" > 
      <ItemTemplate> 
       <div > 
       <asp:LinkButton id="LinkButton1" runat="server" OnClientClick='return ShowRoom(<%# Eval("RoomNum")%>);'> 
        <div style='width:72px;height:72px; background-image:url(<%# Eval("image_path_thumbnail","Styles/Images/{0}") %>)'> 
         <div> 
          <div> 
           <asp:Label ID="Label1" CommandName="cmd_RoomNum" CommandArgument='<%# Eval("RoomNum")%>' 
           runat="server" Text='<%# Eval("RoomNum")%>' ></asp:Label> 
          </div> 
         </div> 
        </div> 
       </asp:LinkButton> 
      </ItemTemplate> 
     </asp:DataList> 
    </div> 
    <div> 
     <div style="float: left; width: 200px;"> 
      <asp:TextBox ID="TextBoxNewRoomNum" runat="server"></asp:TextBox> 
     </div> 
    </div> 
</asp:Panel>  

ответ

0

Вы, вероятно, нужно добавить return false; к вашему Showroom() метод JavaScript. Это остановит обратную передачу.

В LinkButton есть атрибут runat = "server", который заставит его инициировать обратную передачу при каждом нажатии. Вероятно, это причина, по которой панель исчезает.

EDIT:
В ваших комментариях я уверен, что использование метода метода ShowRoom() вызывает <%# Eval("RoomNum")%>.

Когда я сделал подобные вещи, я использовал ключевое слово this для значения параметра. например OnClientClick='return ShowRoom(this);' Затем в методе ShowRoom() этот параметр используется с jQuery для перехода к элементу span, который содержит номер комнаты.

function ShowRoom(linkButton) { 
    var span = $(linkButton).Find(span)[0]; 
    alert(span.innerHTML); 

    return false; 
} 
+0

Я изменил OnClientClict к 'OnClientClick = 'ShowRoom (302);' 'и изменил яваскрипт функции' функции Showroom (номер) {Alert (номер); return false; } ', и панель все еще закрывается (после отображения« alert »). – rbhat

+0

Просто для теста удалите атрибут runat = 'из LinkButton и повторите попытку. Если панель не исчезает, это означает, что это обратный вызов, вызывающий проблему, и «return false»; не останавливает обратную передачу. –

+0

То, что я написал ранее, было моей ошибкой. Я изменил на «OnClientClick =» return ShowRoom (302); »и функцию' function ShowRoom (room) {alert (room); return false; } ', и панель не исчезает после« предупреждения ». – rbhat