2012-04-02 5 views
2

enter image description here Ich habe den folgenden Code, und ich möchte den Wert von der ser in der Eingabeaufforderung an die Textbox eingegeben, die ein asp.net Steuerelement ist, wie mache ich Das? Bitte helfen Sie.Schreiben Sie den Wert in einer Eingabeaufforderung in Textfeld in asp.net eingegeben

protected void btnPreview_Click(object sender, EventArgs e) 
    { 
     divTemplateDesigner.Visible = true; 
     divQueryBuilder.Visible = false; 
     int count = 0; 
     string[] splitMessage = txtTemplate.Text.Split(' '); 
     List<string> parameterList = new List<string>(); 
     List<string> valueList = new List<string>(); 
     string newMessageString = txtTemplate.Text; 
     for (int i = 0; i < splitMessage.Length; i++) 
     { 
      if (splitMessage[i].StartsWith("[")) 
      { 
       parameterList.Add(splitMessage[i]); 
       count++; 
      } 
     } 
     for (int j = 0; j < count; j++) 
     { 
      string message ="Enter "+parameterList[j]; 
      Label lblmsge = new Label(); 
      lblmsge.Text = 
       "<script language='javascript'>" + Environment.NewLine + "window.prompt('" + message + "')</script>"; 
      Page.Controls.Add(lblmsge); 
     } 
    } 

Die Eingabeaufforderungsbox kommt ordnungsgemäß. Aber ich kann den vom Benutzer eingegebenen Wert nicht erfassen.

Und die HTML geht so

<div class="page" runat="server" id="divTemplateDesigner"> 
    <table bgcolor="#0CB1C0" style="width:100%;"> 
     <tr> 
      <td bgcolor="White" class="style5" rowspan="2"> 
       <asp:TreeView ID="treeviewDataset" runat="server" 
        onselectednodechanged="treeviewDataset_SelectedNodeChanged"> 
       </asp:TreeView> 
      </td> 
      <td> 
       <asp:TextBox ID="txtTemplate" runat="server" Height="200px" 
        TextMode="MultiLine" Width="370px"></asp:TextBox> 
      </td> 
      <td colspan="2"> 
       <br /> 
       <br /> 
       <asp:Button ID="btnPreview" runat="server" BackColor="White" Height="30px" 
        Text="Preview" Width="120px" onclick="btnPreview_Click" /> 
      </td> 
      <td> 
       <asp:TextBox ID="txtPreview" runat="server" Height="200px" TextMode="MultiLine" 
        Width="370px"></asp:TextBox> 
      </td> 
     </tr> 
     <tr> 
      <td align="left" colspan="2"> 
       &nbsp; 
       <asp:Button ID="btnBack" runat="server" BackColor="White" Height="30px" 
        Text="Back" Width="120px" onclick="btnBack_Click" /> 

     

Sie in diesem Bild sehen, das Feld hat drei Platzhalter [patient_ID] [Doctor_ID] und [Appointment_Date] Öffnen von Eingabeaufforderungsfeldern abhängig von der Anzahl der Platzhalter in der ersten Box. Count = Anzahl der Platzhalter

+1

err, die TextBox? – Bazzz

+0

Ich würde empfehlen, dass Sie dies in JavaScript vollständig tun. –

+0

gibt es ein Textfeld namens txtPreview. was nicht im Code erwähnt wird. – Apoorva

Antwort

2

Verwenden Sie einfach Javascript, um zu erreichen, was Sie suchen, anstatt ein Postback auf den Server.

<script type="text/javascript"> 
    function PromptAndFillPreview() { 
     var templateStr = document.getElementById('<%= txtTemplate.ClientID %>').innerText; 
     var previewStr = ''; 
     var phIndexStart = templateStr.indexOf('['); 
     var phIndexEnd = 0; 
     while (phIndexStart >= 0) { 
      previewStr = previewStr + templateStr.substring(phIndexEnd, phIndexStart); 
      phIndexEnd = templateStr.indexOf(']', phIndexStart) + 1; 
      var placeholder = templateStr.substring(phIndexStart, phIndexEnd); 
      previewStr = previewStr + prompt("Please input value for " + placeholder, ''); 
      phIndexStart = templateStr.indexOf('[', phIndexEnd); 
     } 
     previewStr = previewStr + templateStr.substring(phIndexEnd, templateStr.length); 
     document.getElementById('<%= txtPreview.ClientID %>').innerText = previewStr; 
    } 
</script> 

Und da Sie die Postbacks nicht benötigen, können Sie ersetzen:

<asp:Button ID="btnPreview" runat="server" BackColor="White" Height="30px" 
    Text="Preview" Width="120px" onclick="btnPreview_Click" /> 

mit:

<input type="button" style="background-color:White; height:30px; width:120px;" 
    value="Preview" onclick="PromptAndFillPreview()" /> 
+0

Erstaunlich Thnx:) thnx eine Tonne :) – Apoorva

+0

Thnx für deine Zeit und Geduld :) – Apoorva