asp.net - hace - Implementación de IsPostBack en carga de página
ispostback c# ejemplos (8)
Además, debe usar IsPostBack si desea inicializar los controles, de lo contrario, se revertirán al valor predeterminado en cada carga. Esto confundirá al usuario, ya que cuando intenten utilizar el formulario, sus valores ingresados se restablecerán a sus valores predeterminados.
Cuanto más uso ASP.NET, más if (!IsPostBack) {}
parece inútil ...
Primer ejemplo:
Por ejemplo, solo busqué en Google un problema, dijeron que usar esto como parte de la solución:
if (!Page.IsPostBack)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
Lo que hace exactamente como está codificado, LoadComplete solo se disparará en la primera carga. Después de hacer clic en un botón, o en cualquier cosa que desencadene una devolución, el evento LoadComplete se deja desconectado, por lo que se omite el controlador de eventos. Por lo tanto, su "corrección" solo funciona en la primera carga = sin valor. if (!Page.IsPostBack) {}
rápidamente el if (!Page.IsPostBack) {}
y ahora el evento siempre se dispara como se desea.
Segundo ejemplo:
Estoy intentando enganchar eventos a un botón creado dinámicamente (que por cierto, no puedo ponerme a trabajar [GRR!]). Veo ejemplos que muestran esto:
myEditToggleButton = new Button();
myEditToggleButton.ID = "editToggleButton";
//^GOTTA HAVE THIS FOR EVENTS TO WORK! (supposedly, I haven''t seen it work...)
if (!IsPostBack)
{
myEditToggleButton.Click += new EventHandler(myEditToggleButton_Click);
}
Controls.Add(myEditToggleButton);
Como en el primer ejemplo, entiendo que el evento no se engancharía después de la primera carga de la página, por lo tanto, el botón es "inerte" después de un clic (porque al hacer clic en una devolución de datos).
Pregunta:
¿Cuándo debería usar if (!IsPostBack) {}
? Supongo que tiene que ver con controles de marcado creados solamente.
Cuando no hay necesidad de repetir la operación que no sea la primera vez.
úselo con operaciones costosas (como obtener datos de una base de datos o llenar ListItems) que deben realizarse solo la primera vez que se carga la página o el control. Si la página se publica en el servidor y luego se vuelve a cargar, no es necesario repetir la operación. Al probar el valor de IsPostBack, puede omitir la operación costosa,
En resumen, lo usa cada vez que necesita ejecutar algo SOLAMENTE en la primera carga.
El uso clásico de Page.IsPostBack
es el enlace de datos / inicialización de control.
if(!Page.IsPostBack)
{
//Control Initialization
//Databinding
}
Las cosas que se conservan en ViewState
y ControlState
no necesitan recrearse en cada devolución de datos, por lo que debe verificar esta condición para evitar la ejecución de código innecesario.
Otro uso clásico es obtener y procesar parámetros de Querystring
. Usted no necesita hacer eso en la devolución de datos.
Es para procesar los datos del formulario.
Si desea manejar datos PUBLICADOS, solo desea hacerlo si la página realmente publicó datos, no en la primera carga. Por lo tanto, la bandera IsPostBack.
Lo que puede suceder si causa una devolución es que puede cambiar el estado de sus controles, sin querer hacerlo. Por ejemplo, al usar una vista de cuadrícula, si realiza una devolución durante el modo de edición, ya no tendrá acceso a los campos de edición.
A menudo, debe evitar que la información desaparezca en una página cuando llegue al servidor, este es el punto de
if(!Page.IsPostBack)
Los controladores de eventos deben conectarse cada vez que se pueda activar el evento (independientemente del estado de PostBack)
Además, al agregar controles dinámicamente, asegúrese de observar el ciclo de vida de la página asp
Primero debe comprender qué es la devolución de datos, cuando inicia su proyecto en Visual Studio,
Si tiene una if statement
que verifica si isPostBack
es true
o false
en su método Page_Load
, en este punto, isPostBack
es false
, significa que no es una postback
, entonces, ¿qué es la devolución de datos?
ahora haga clic en un button
(si no tiene un botón, agregue uno y el método de hacer clic también), en este punto, envía una solicitud al servidor, el servidor y luego la respuesta, este proceso se denomina postback
, que se activa al hacer clic en el button
,
una cosa que realmente debe notar, el método Page_Load
se ejecutará de nuevo, no solo se Button_click
método Button_click
, por lo que ahora, isPostBack
es true
, significa que es devolución de datos, sí, realmente es una devolución de datos, porque hizo clic en botón.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
SqlConnection conn = new SqlConnection("Data Source=-----; Database=-----; Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter();
conn.Open();
da.SelectCommand = new SqlCommand("Select Command",conn);
conn.Close();
DataTable dt = new DataTable();
da.Fill(dt);
ddlSearch.DataSource = dt;
ddlSearch.DataTextField = "---";
ddlSearch.DataValueField = "---";
ddlSearch.DataBind();
}
}