Tôi có một repeater được databound đến một SqlDataSourceRepeater.Items chỉ có ở trong sự kiện click nút khi tôi DataBind trong sự kiện đó, nhưng tất cả đầu vào textbox là trống
<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>
Tôi muốn để lặp qua lặp lại và nhận được giá trị trong NumberNeeded trong 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
}
}
các repeater hiển thị các mục của nó một cách hoàn hảo trên trang, nhưng khi tôi nhấp vào nút gửi, this.Repeater.Items là rỗng (trừ khi tôi gọi this.Repeater.DataBind() trong phương pháp đó).
Tôi đã thử ràng buộc dữ liệu rõ ràng Lặp lại trong Page_Load và Page_Init bên trong và bên ngoài kiểm tra Page.IsPostBack và mỗi lần tôi không nhận được Mục nào hoặc không có Giá trị văn bản.
Tôi đã nhận được một thiết lập gần như giống hệt nhau để hoạt động trong quá khứ, trên trang không có trang chính. Tôi cũng nhận thấy rằng điều này.Master.EnableViewState là sai trong phương thức submit_Click, không có vấn đề nếu tôi đặt nó thành true trong Page_Init hoặc Page_Load. this.EnableViewState là đúng.
thủ tục lưu trữ của tôi mất thông số tùy chọn, Soi thử thêm CancelSelectOnNullParameter = "false" trong SqlDataSource của tôi, và tôi đã nhận hành vi tương tự (Repeater hoạt động tốt trên trang web, nhưng mục bất động sản vẫn còn trống). – user467384