2016-04-20 10 views
0

У меня есть datalist в пределах panel, который выглядит следующим образом. Каждый элемент данных (с LinkButton и CommandArgument) отображает комнатуNum.Установка значения текстового поля из элемента данных datalist без обратной передачи?

Не делая PostBack, я пытаюсь заполнить textbox TextBoxRoomNum с RoomNum из Label1 в DataList пункта. Я предполагаю, что это будет сделано с javascript.

<asp:Panel ID="PanelRoomDetail" runat="server" style="position:absolute; width:600px; height: 600px; display:none"> 
    <telerik:RadTabStrip RenderMode="Lightweight" runat="server" ID="RadTabStrip1" MultiPageID="RadMultiPage1" SelectedIndex="0" > 
     <Tabs> 
      <telerik:RadTab Text="Assign" Width="200px"></telerik:RadTab> 
     </Tabs> 
    </telerik:RadTabStrip> 
    <telerik:RadMultiPage runat="server" ID="RadMultiPage1" SelectedIndex="0"> 
     <telerik:RadPageView runat="server" ID="RadPageView2"> 
      <div style="width: 600px; height: 200px; "> 
       <div style="width: 600px;"> 
        <asp:DataList ID="DataListFloorThumb" runat="server" RepeatColumns="5" > 
         <ItemTemplate> 
          <div style="width:72px;height:72px"> 
          <asp:LinkButton id="LinkButton1" runat="server"> 

           <div style='background-image:url(<%# Eval("image_path","Styles/Images/{0}") %>)'> 
            <div style="overflow: hidden;"> 
             <div style="text-align: left; float:left;"> 
              <asp:Label ID="Label1" runat="server" Text='<%# Eval("RoomNum")%>' CommandName="cmd_RoomNum" CommandArgument='<%# Eval("RoomNum")%>' Font-Names="Calibri" Font-Size="11pt"></asp:Label> 
             </div> 
            </div> 
           </div> 
          </asp:LinkButton> 
         </ItemTemplate> 
        </asp:DataList> 
       </div> 
      </div> 
      <div> 
       <div> 
        <asp:TextBox ID="TextBoxRoomNum" runat="server"></asp:TextBox> 
       </div> 
      </div> 
     </telerik:RadPageView> 
    </telerik:RadMultiPage> 
</asp:Panel> 

Это можно легко сделать, если страница не постбэк, но без постбэка я предполагаю, что это требует JavaScript, и это где я застрял. Я не предпочитаю jquery.

Спасибо.

ответ

0

Как и с любым контролем на стороне сервера, вы можете добавить OnClientClick атрибут, который будет выполнять JavaScript введенный в значении атрибута:

Ограничение: не тестировался. Не уверен в синтаксисе Eval, который всегда укусил меня. Не выполнять правильную нулевую проверку. Сценарий загрязняет глобальный масштаб.

<asp:LinkButton id="LinkButton1" runat="server" 
    OnClientClick='return ShowRoom(<%# Eval("RoomNum")%>);' /> 

... где-то еще:

<script> 
     function ShowRoom(room){ 
      var txtBox = document.querySelector("#TextBoxRoomNum"); 
      txtBox.value = room; 
      return false; 
     } 
</script> 
+0

Спасибо за Ваш ответ. Я забыл упомянуть в коде, что панель использует «ModalPopupExtender». Это повлияет на решение? Кажется, что когда я нажимаю на datalist, всплывающее окно исчезает, и я предполагаю, что это потому, что он выполняет частичную обратную передачу? – rbhat

+0

@rbhatup, я действительно не могу сказать, как это будет выглядеть. Модальные все равно должны иметь доступ к javascript. Может быть, не верните ложь? Я сомневаюсь, что он выполняет частичную обратную передачу. – Crowcoder