Pregunta simple, supongo.¿Por qué es necesario el método DataBind()?
Durante mucho tiempo he seguido ciegamente un patrón (supuestamente) común cuando programáticamente los datos de mis controles ASP.NET. A saber:
gridView1.DataSource = someList;
gridView1.DataBind();
Sin embargo, si estuviera ajustando el GridView para unirse a un control de origen de datos través de la propiedad DataSourceID, la llamada a DataBind() es innecesario. A saber:
gridView1.DataSourceID = LinqDataSource1;
es suficiente.
Por otra parte, si se intenta establecer la propiedad DataSource en ASPX marcado, que son recibidos con lo siguiente:
No se puede establecer la propiedad DataSource de forma declarativa.
Supongo que estos están relacionados, pero todavía estoy perplejo sobre por qué DataBind() es necesario. La diferencia entre DataSource y DataSourceID es secundaria: puedo entender algo de magia que tiene lugar allí. La verdadera pregunta es ¿por qué el organizador de orígenes DataSource no causa la unión de datos automáticamente? ¿Hay algún escenario en el que deseemos establecer el DataSource pero sin vincularlo?
¿Puede explicar cómo unión hace que tarde un tiempo más corto para mantener los datos en la memoria?Supongo que para una simple Colección guardada en la memoria (como arriba, si someList es List
Piense en usar un lector de datos como fuente. Si se vincula de inmediato, iterará sobre el lector y tendrá esos contenidos en la memoria. Si esperas más adelante en el ciclo de vida de la página, te aferras a él por menos tiempo. –
Gracias por la explicación, sin embargo, no entiendo cómo 'esto reduce la cantidad de tiempo que mantiene activa esa conexión'. La conexión está abierta solo cuando se llama a ExecuteSelect() desde el evento OnDataBinding. Cuando ExecuteSelect() termina, llama a 'dbConnection.Close();' y la conexión ya no está activa. ¿Me estoy perdiendo de algo? – BornToCode