Mam repeater, która jest z danymi do SqlDataSourceRepeater.Items zapełnia tylko w przypadku kliknięcia przycisku kiedy databind w tym przypadku, ale wszystkie wejścia textbox są puste
<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>
Chcę iteracyjne nad repeatera i uzyskać wartość w NumberNeeded w 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
}
}
repeater wyświetla jego elementy idealnie na stronie, ale po kliknięciu przycisku Prześlij, this.Repeater.Items jest pusty (chyba zadzwonię this.Repeater.DataBind() w tej metodzie).
Próbowałem jawnie Repeater wiążącego dane w Page_Load i Page_Init wewnątrz i na zewnątrz kontroli! Page.IsPostBack, i za każdym razem nie otrzymuję żadnych elementów lub nie ma wartości tekstu.
Mam prawie identyczne ustawienia do pracy w przeszłości, na stronie bez strony wzorcowej. Zauważyłem również, że this.Master.EnableViewState ma wartość false w metodzie submit_Click, niezależnie od tego, czy ustawię ją na true w Page_Init lub Page_Load. this.EnableViewState ma wartość true.
Moje procedura składowana pobiera parametry opcjonalne Soi próbowała dodanie CancelSelectOnNullParameter = „false” w moim SqlDataSource, a ja mam takie samo zachowanie (Repeater działa poprawnie na stronie, ale własność przedmioty jest nadal pusty). – user467384