Tengo una página ASP simple con una grilla de datos (vinculada a una fuente de objeto). La cuadrícula está dentro de la página de un asistente y tiene una casilla de verificación 'seleccionar' para cada fila.GridView no recuerda el estado entre las devoluciones de datos
En una etapa del asistente, Ato GridView:
protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
...
// Bind and display matches
GridViewMatches.EnableViewState = true;
GridViewMatches.DataSource = getEmailRecipients();
GridViewMatches.DataBind();
Y cuando se hace clic en el botón Finalizar, que iterar por las filas y comprobar lo que está seleccionado:
protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
// Set the selected values, depending on the checkboxes on the grid.
foreach (GridViewRow gr in GridViewMatches.Rows)
{
Int32 personID = Convert.ToInt32(gr.Cells[0].Text);
CheckBox selected = (CheckBox) gr.Cells[1].FindControl("CheckBoxSelectedToSend");
Pero al esta etapa GridViewMatches.Rows.Count = 0! No vuelvo a unir la red, no debería necesitar, ¿verdad? Espero que el estado de vista mantenga el estado. (Además, si vuelvo a vincular la cuadrícula, mis casillas de verificación de selección se borrarán)
NB: Esta página también agrega dinámicamente controles de usuario en el método OnInit. He oído que podría interferir con el estado de la vista, pero hasta donde sé, lo estoy haciendo correctamente y parece que el ViewState para esos controles agregados funciona (los valores se mantienen entre las devoluciones)
Muchas gracias ¡avance para cualquier ayuda!
Ryan
ACTUALIZACIÓN: ¿Podría ser esto que ver con el hecho de que soy la creación de la fuente de datos mediante programación? Me preguntaba si el motor asp estaba enlazando datos de la red durante el ciclo de vida de la página con una fuente de datos que aún no estaba definida. (En una página de prueba, el GridView está 'automáticamente' vinculado a datos '. No quiero volver a enlazar la red ¡Solo quiero los valores del viewstate de la publicación anterior!
Además, tengo esto en el cabecera asp: ViewStateEncryptionMode = "Nunca" - esto era resolver un mensaje de vez en cuando 'no válida Viewstate Validación MAC'
como referencia, mi GridView se define como sigue:
<asp:GridView ID="GridViewMatches" runat="server" AllowSorting="True" AutoGenerateColumns="False"
BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"
OnDataBinding="GridViewMatches_OnBinding">
<Columns>
<asp:BoundField DataField="PersonID"><ItemStyle CssClass="hidden"/></asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBoxSelectedToSend" runat="server"
Checked='<%# DataBinder.Eval(Container.DataItem, "SelectedToSend") %>'/>
</ItemTemplate>
...
Gracias. Gracias. Mil veces, gracias. Me salvaste un montón de dolor de cabeza. Por cierto, el mismo problema también ocurre en Page_Init. – jwd