Ho un ripetitore che è databound ad uno SqlDataSourceRepeater.Items popola solo in Pulsante evento click quando ho DataBind in questo caso, ma tutti gli ingressi della casella di testo sono vuote
<asp:Repeater runat="server" ID="Repeater" DataSourceID="SqlDataSource">
<ItemTemplate>
<asp:HiddenField runat="server" Value='<%# Eval("Code") %>' ID="Code" />
<asp:TextBox ID="NumberNeeded" runat="server" Text='<%# Eval("Needed") %>' /><br />
</ItemTemplate>
</asp:Repeater>
<asp:Button runat="server" ID="submit" Text="submit" OnClick="submit_Click" />
<asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="rtvFiltered" SelectCommandType="StoredProcedure">
<SelectParameters>
</SelectParameters>
</asp:SqlDataSource>
voglio iterare il ripetitore e ottenere il valore in NumberNeeded in submit_Click
protected void submit_Click(object sender, EventArgs e)
{
this.Repeater.DataBind(); //comment this guy and this.Repeater.Items has no items
foreach (RepeaterItem item in this.Repeater.Items)
{
String code = ((HiddenField)item.FindControl("JournalCode")).Value;
// below fails because "NumberNeeded" control doesn't have the Text input by the user.
int numNeeded = Int32.Parse(((TextBox)item.FindControl("NumberNeeded")).Text);
// Doing other stuff with numNeeded
}
}
il ripetitore mostra i suoi elementi perfettamente sulla pagina, ma quando clicco sul pulsante di invio, this.Repeater.Items è vuota (a meno che io chiamo this.Repeater.DataBind() in quel metodo).
Ho provato esplicitamente il binding di dati Repeater in Page_Load e Page_Init all'interno e all'esterno di un controllo! Page.IsPostBack, e ogni volta che non ottengo nessun elemento o nessun valore di testo.
Ho ottenuto una configurazione quasi identica per funzionare in passato, su una pagina senza una pagina principale. Ho anche notato che this.Master.EnableViewState è falso nel metodo submit_Click, non importa se l'ho impostato su true in Page_Init o Page_Load. this.EnableViewState è true.
mio stored procedure accetta parametri opzionali, Soi provato ad aggiungere CancelSelectOnNullParameter = "false" nel mio SqlDataSource, e ho avuto lo stesso comportamento (ripetitore funziona bene sulla pagina, ma la proprietà Items è ancora vuoto). – user467384