2016-04-20 21 views
0

Ich habe eine datalist innerhalb einer panel, die wie folgt aussieht. Jeder Datenlisteneintrag (mit LinkButton und CommandArgument) zeigt die roomNum an.Textbox-Wert aus Data-List-Element-Klick ohne Postback setzen?

Ohne PostBack zu tun, versuche ich textbox TextBoxRoomNum mit RoomNum von Label1 in der Datenliste Artikel zu füllen. Ich nehme an, es wird mit javascript getan werden.

<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> 

Dies kann leicht, wenn die Seite tut Postbacks getan werden, aber ohne Postbacks Ich nehme an, es einige Javascript erfordert, und das ist, wo ich bin stecken. Ich bevorzuge keine JQuery.

Danke.

Antwort

0

Wie bei jeder serverseitige Steuerung, können Sie ein OnClientClick Attribut hinzufügen, das die Javascript Sie in dem Attributwert eingeben wird ausgeführt:

Haftungsausschluss: nicht getestet. Ich bin mir der Eval-Syntax nicht sicher, die mich immer beißen. Keine ordnungsgemäße Nullprüfung durchführen. Skript verschmutzt den globalen Geltungsbereich.

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

... woanders:

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

Vielen Dank für Ihre Antwort. Ich habe vergessen zu erwähnen, dass das Panel im Code einen 'ModalPopupExtender' verwendet. Würde das die Lösung beeinflussen? Es scheint, dass, wenn ich auf den Datenlogger klicke, das Popup verschwindet, und ich nehme an, es ist, weil es ein teilweises Postback macht? – rbhat

+0

@rbhatup, ich kann wirklich nicht sagen, wie das sich verhalten würde. Das Modal sollte weiterhin auf das Javascript zugreifen können. Vielleicht nicht falsch? Ich bezweifle, dass es einen teilweisen Postback macht. – Crowcoder