textbox
  • repeater
  • webforms
  • 2013-05-17 28 views 6 likes 
    6

    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.

    Trả lời

    1

    Đó là cài đặt EnableViewState trên trang chính.

    Trong phương thức Page_Load của trang cái this.EnableViewState đã được đặt thành false. Tôi đã đổi nó thành Page.EnableViewState và mọi thứ đã hoạt động.

    this.EnableViewState = Page.EnableViewState; // add to Master page Page_Load method 
    

    do'h

    2

    Khi bạn nêu rõ, bạn không cần phải gọi số DataBind() trong mã của mình phía sau, do đó, sự cố có thể xảy ra với việc truy xuất dữ liệu. Liệu thủ tục lưu trữ của bạn có tham số nào không? Bạn đã thử thêm CancelSelectOnNullParameter="false" vào SqlDataSource chưa?

    +0

    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

     Các vấn đề liên quan

    • Không có vấn đề liên quan^_^