【问题标题】:Textbox erase data after postback回发后文本框擦除数据
【发布时间】:2014-08-21 18:25:12
【问题描述】:

我的文本框不保留回发数据时遇到问题,在我的代码中,我有 asp.cs 事件 btnGuardar 按钮正在通过存储过程插入它们并进行回发,这里的问题是当你回发除了放置texbox标题新闻之外的其他维护数据的字段,我不明白的是在我的电脑上使用windows pro 8.1和最新版本的iis在本地工作,但是这个错误并没有为我节省价值texbox 它发生在 windows server 2012 中,这发生在我正在做的系统中的几个 texbox 其他页面中。

<%@ Page Title="" Language="C#" MasterPageFile="~/Admin.master" AutoEventWireup="true" CodeFile="AltaEvento.aspx.cs" Inherits="Apartados_Administrar_Eventos_AltaEvento" EnableViewState="true" %>
<%@ Register TagPrefix="cc" Namespace="Winthusiasm.HtmlEditor" Assembly="Winthusiasm.HtmlEditor" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <style>
        .pickerEventosAdmin
        {
            width: 600px;
        }

    </style>
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <div class="other-box yellow-box ui-corner-all">
        <div class="cont tooltip ui-corner-all"
            title="Para mayor informaci&oacute;n: - Comun&iacute;quese con el administrador - Consulte la documentaci&oacute;n del m&oacute;dulo">
            <h3>Alta y Edici&oacute;n de eventos</h3>
            <p>
                Genere nuevos eventos y edite anteriores. Un evento puede contener im&aacute;genes, v&iacute;deos, y documentos.
            </p>
            <p>
                Puede agregar las im&aacute;genes, v&iacute;deos, y documentos despu&eacute;s de que guarde el evento.
            </p>
        </div>
    </div>
   <%-- <h1><span style="color:red; font-size:20px"> Se está trabajando con esta pantalla. Aún no puede dar de alta eventos</span></h1><br />--%>

    <asp:Label ID="lblMensaje" ClientIDMode="Static" runat="server"></asp:Label>
    <div class="portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all form-container">
        <div class="portlet-header ui-widget-header">Formulario de creaci&oacute;n y edici&oacute;n de eventos</div>
        <div class="portlet-content">
            <ul class="form-ul">     
                <li>
                    <label runat="server" for="<%=txtTituloEvento.ClientID%>">* Titulo del evento:</label>
                    <asp:TextBox  ID="txtTituloEvento" runat="server" CssClass="text  large"></asp:TextBox>
                </li>
                <li class="clearfix"></li>
                <li>
                    <label for="<%=Descripcion.ClientID%>">* Informaci&oacute;n del evento:</label>
                    <cc:HtmlEditor ID="Descripcion" runat="server" Height="100px" Width="750px"
                        ToggleMode="None" BackColor="White" BorderColor="WhiteSmoke"
                        BorderStyle="Solid" ButtonMouseOverColor="193, 210, 238"
                        DialogBackColor="GhostWhite" DialogBorderColor="Black"
                        DialogButtonBarColor="SlateGray" DialogForeColor="Black"
                        DialogHeadingColor="208, 208, 208" DialogHeadingTextColor="127, 157, 185"
                        DialogSelectedTabColor="127, 157, 185" DialogSelectedTabTextColor="White"
                        DialogTableColor="238, 238, 238" DialogUnselectedTabColor="208, 208, 208"
                        EditorBackColor="248, 248, 248" EditorBorderColor="217, 217, 217"
                        EditorInnerBorderColor="GradientInactiveCaption"
                        NoToolstripBackgroundImage="True" TabBackColor="208, 208, 208"
                        ToolbarColor="208, 208, 208"
                        Toolbars="Bold,Italic,Underline:Left,Center,Right,Justify|OrderedList,BulletedList|Subscript,Superscript,Link" />
                </li>
                <li class="clearfix"></li>
                <li>
                    <br />


                            <asp:CheckBox ID="chkPublicar" AutoPostBack="true" runat="server" /> Publicar

                     <%--   <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="chkPublicar" EventName="CheckedChanged" />
                        </Triggers>--%>

                </li>
                <li class="clearfix"></li>                                
                <li>
                    <br />
                    <asp:Button ID="btnGuardar" runat="server" Text="Guardar" CssClass="submitBtn" OnClick="btnGuardar_Click" />
                    <br /><br />
                </li>                
            </ul>
        </div>
    </div>
    <br />

以及 aspx.cs 背后的代码

 using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;
    using System.Web.Security;
    using System.Text.RegularExpressions;

    public partial class Apartados_Administrar_Eventos_AltaEvento : System.Web.UI.Page
    {
        protected int IdEvento = 0;
        protected string _fechasEvento = "";
        protected string _fechaNuevaEvento = "";

    private void CargaFechasEvento( int eventoId)
        {
            using (SqlConnection Conn = conexionAdmin.Conecta())
            {
                using (SqlCommand cmdSelFechas = new SqlCommand("SelEventoByID", Conn))
                {
                    cmdSelFechas.CommandType = CommandType.StoredProcedure;
                    cmdSelFechas.Parameters.Add("@IDEVENTO", SqlDbType.Int).Value = eventoId;
                    Conn.Open();
                    SqlDataReader drEventos = cmdSelFechas.ExecuteReader();

                    if (drEventos.Read())
                    {
                       _fechasEvento = drEventos["Fecha_Evento"] == DBNull.Value ? "" : (string)drEventos["Fecha_Evento"];
                    }
                    drEventos.Close();
                    Conn.Close();
                    Conn.Dispose();
                }
            }
        }

        private void UpdStatusEvento(int IDNoticia, int Status, string idUser = "")
        {
            Guid userId = new Guid();
            if (idUser != "") { userId = new Guid(idUser); } // Conversion de string to Guid(el formato del UserId del Membership)
            using (SqlConnection Conn = conexionAdmin.Conecta())
            {
                using (SqlCommand CmdUpdStatusNoticia = new SqlCommand("UpStatusEvento", Conn))
                {
                    CmdUpdStatusNoticia.CommandType = CommandType.StoredProcedure;
                    CmdUpdStatusNoticia.Parameters.Add("@IDNOTICIA", SqlDbType.Int).Value = IDNoticia;

                    CmdUpdStatusNoticia.Parameters.Add("@STATUS", SqlDbType.Int).Value = Status;

                    if (idUser != "")
                    {
                        userId = new Guid(idUser);
                        CmdUpdStatusNoticia.Parameters.Add("@USERID", SqlDbType.UniqueIdentifier).Value = userId;
                    }
                    Conn.Open();
                    CmdUpdStatusNoticia.ExecuteNonQuery();
                    Conn.Close();
                    Conn.Dispose();
                }
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        { 

            //No shows me the ID of the textbox does not display asp.net control and I value the value entered at the texbox
            //Response.Write(txtTituloEvento.Text);
            //Response.End();
                if (txtTituloEvento.Text.Trim() == "")
                {
                    lblMensaje.Text = Alertas.alertaError("", "El t&iacute;tulo del evento es obligatorio");
                    return;
                }
                if (Descripcion.Text.Trim() == "")
                {
                    lblMensaje.Text = Alertas.alertaError("", "La descripci&oacute;n del evento es obligatoria");
                    return;
                }

              if (!Regex.IsMatch(txtTituloEvento.Text, Utilidades.validaTextoGeneral))
                {
                    lblMensaje.Text = Alertas.alertaError("", "La Título del evento no puede contener caracteres especiales.");
                    return;
                }

                string comando = "InsEvento";
                if (IdEvento != 0)
                {
                    comando = "UpdEvento";
                }
                using (SqlConnection Conn = conexionAdmin.Conecta())
                {
                    using (SqlCommand cmdInsEvento = new SqlCommand(comando, Conn))
                    {
                        cmdInsEvento.Connection = Conn;
                        string user = HttpContext.Current.User.Identity.Name; // Usuario logueado
                        MembershipUser u = Membership.GetUser(user);
                        string idUser = u.ProviderUserKey.ToString(); // Se obtiene el id del usuario pero en formato string
                        Guid userId = new Guid(idUser); // Se convierte a GUID el idUser

                        cmdInsEvento.CommandType = CommandType.StoredProcedure;
                        cmdInsEvento.Parameters.Add("@TITULO", SqlDbType.NVarChar, 100).Value = txtTituloEvento.Text.Trim();
                        cmdInsEvento.Parameters.Add("@CONTENIDO", SqlDbType.NVarChar).Value = Descripcion.Text.Trim();
                        cmdInsEvento.Parameters.Add("@PUBLICAR", SqlDbType.Bit).Value = chkPublicar.Checked;
                        if (chkPublicar.Checked == true)
                        {
                            cmdInsEvento.Parameters.Add("@USERID", SqlDbType.UniqueIdentifier).Value = userId;
                        }
                        SqlParameter prmIdEvento = new SqlParameter("@IDEVENTO", SqlDbType.Int);
                        if (IdEvento != 0)
                        {
                            // update
                            cmdInsEvento.Parameters.Add("@IDEVENTO", SqlDbType.Int).Value = IdEvento;
                        }
                        else
                        {
                            // insert parametro de salida

                            prmIdEvento.Direction = ParameterDirection.Output;
                            cmdInsEvento.Parameters.Add(prmIdEvento);
                        }
                        Conn.Open();
                        cmdInsEvento.ExecuteNonQuery();
                        Conn.Close();
                        if (IdEvento == 0)
                        {
                            IdEvento = Convert.ToInt32(prmIdEvento.Value);
                            Response.Redirect("AltaEvento.aspx?Key=" + IdEvento);
                        }
                        lblMensaje.Text = Alertas.alertaExito("", "El evento se actualiz&oacute; correctamente");
                    } /
                }

        } 

        protected void btnVolver_Click(object sender, EventArgs e)
        {
            Response.Redirect("Default.aspx");
        }

    }

【问题讨论】:

  • this should help (我认为你必须自己持久化数据并重新加载它,等我回家我可以看看一个旧项目,希望对你有帮助)
  • 我会说要么将值存储在会话中,要么将值填充到 ASP:HiddenField 中,然后在 Page_Load 方法中将值放回文本框中。在 Page_Load 中使用 If(Page.IsPostback)。

标签: c# asp.net textbox postback


【解决方案1】:

怎么样,您将 Textbox.text 值保存在会话变量中并在页面加载时重新绑定它。检查here 是否有类似问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多