Данные не изменяются в TextBox - PullRequest
2 голосов
/ 16 декабря 2011

Хорошо, я ходил с этим часами (поиск и т. Д.). Это то, что я хочу сделать, я хочу загрузить данные в текстовое поле, и если пользователь изменяет текст в текстовом поле, я хочу сохранить новый текст.

Моя проблема в событии TxtBox_TextChanged: данные, содержащиеся в текстовом поле txtNarrative, представляют собой новые данные, введенные пользователем (<> ABCD), но в событии btnSubmit_Click данные, содержащиеся в txtNarrative, являются исходным значением ABCD.

Что я делаю не так ??

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WorkBench_VBNet._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <fieldset>
        <span class="title">Entry Form</span>
            <ul class="pageitem">
                <li class="Narrative">
                    <asp:TextBox EnableViewState=true ID="txtNarrative" placeholder="Narrative" Width="100%" 
                            Rows="10" TextMode="multiline" runat="server" Height = "100%" OnTextChanged="TxtBox_TextChanged" >
                    </asp:TextBox></li>

                <li class="Submit">
                    <asp:LinkButton ID="btnSubmit" runat="server">Submit</asp:LinkButton>
                </li>
            </ul>
        </fieldset>
    </div>
    </form>
</body>
</html>

Код сзади:

Public Class _Default
    Inherits System.Web.UI.Page

    Public Event TextChanged As EventHandler

    Protected Sub TxtBox_TextChanged(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles txtNarrative.TextChanged


        ViewState("txtNarrative") = txtNarrative.Text ''<-- The text here is the changed text not ABCD
        txtNarrative.Text = ViewState("txtNarrative").ToString

    End Sub

    Private Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click
        Dim Narrative as String = txtNarrative.Text '<-- the text in the text box is still ABCD not what was changed.

        ''Code to update data in the Database goes here
    End Sub


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            txtNarrative.Text = "ABCD"
        End If
    End Sub

End Class

Ответы [ 2 ]

0 голосов
/ 17 декабря 2011

Я не уверен, что понимаю ваш вопрос, но:

Вам не нужно добавлять текстовое поле «OnTextChanged» в разметку.

В вашем коде за вами уже есть дескрипторы объявления.

Если вы используете оба («OnTextChanged» в html-разметке и обрабатывает свой код сзади), событие текстового поля будет инициировано дважды.

   Protected Sub TxtBox_TextChanged (ByVal sender As Object, _
         ByVal e As System.EventArgs) Handles txtNarrative.TextChanged


         ViewState ("txtNarrative") = txtNarrative.Text''<-- The text here text is not changed the ABCD
         txtNarrative.Text = ViewState ("txtNarrative"). ToString

     end Sub


  <asp: TextBox EnableViewState = true ID = "txtNarrative" placeholder = "Narrative" Width = "100%"
                             Rows = "10" TextMode = "multiline" runat = "server" Height = "100%">
                     </ asp: TextBox>

также проверил ваш код, и отправленное значение является новым значением в текстовом поле. (Т.е. если я понимаю твой вопрос)

Надеюсь, это поможет

0 голосов
/ 16 декабря 2011

Избавьтесь от TxtBox_TextChanged Sub, он не нужен, IPostBackDataHandler из TextBox сделает это за вас:

<asp:TextBox EnableViewState=true ID="txtNarrative" placeholder="Narrative" Width="100%" 
                        Rows="10" TextMode="multiline" runat="server" Height = "100%"  >
                </asp:TextBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...