Запись значения, введенного в поле приглашения, в текстовое поле asp.net - PullRequest
2 голосов
/ 02 апреля 2012

enter image description here У меня есть следующий код, и я хочу, чтобы значение, введенное ser в поле приглашения, в текстовое поле, являющееся элементом управления asp.net, как мне это сделать? Пожалуйста, помогите.

 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);
        }
    }

Окно подсказки появляется правильно. Но я не могу зафиксировать введенное пользователем значение.

И HTML-код выглядит так

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

вы видите на этом изображении, что поле имеет три заполнителя [Patient_ID] [Doctor_ID] и [Appointment_Date] Открываю подсказки в зависимости от количества заполнителей в первом поле. Количество = количество заполнителей

1 Ответ

2 голосов
/ 03 апреля 2012

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

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

И так как вам не нужна обратная передача, вы можете заменить:

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

с:

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