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

    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.

    Odpowiedz

    1

    Było to ustawienie EnableViewState na stronie wzorcowej.

    W metodzie Page_Load strony wzorcowej this.EnableViewState ustawiono na wartość false. Zmieniłem go na Page.EnableViewState i wszystko działało.

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

    do'h

    2

    Zgodnie z tym, co musisz wiedzieć, nie powinieneś dzwonić pod numer DataBind(), więc problem może dotyczyć pobierania danych. Czy twoja procedura przechowywana ma jakieś parametry? Czy próbowałeś dodać CancelSelectOnNullParameter="false" do SqlDataSource?

    +0

    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

    Powiązane problemy