Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Datagrid - Editing Multiple Rows At Once

Îåêßíçóå áðü ôï ìÝëïò egeorge. Τελευταία δημοσίευση από το μέλος egeorge στις 16-02-2006, 21:31. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-02-2006, 17:04 9787

    Datagrid - Editing Multiple Rows At Once

    Γεια χαρά,

    Έχω φτιάξει ένα datagrid το οποίο κάνω databind από βάση, και αποτελείτε από fields και ένα textbox το οποίο και θέλω να μπορέι να αλλάζει ο χρήστης και στο πάτημα ενός button εκτός grid να γίνετε  Update στην βάση. Στο  Unload της σελίδας ελέγχω για PostBack και το EnableViewState της σελίδας και του control είναι True.

    Με ένα loop,  στο button click, διαβάζω όλα τα textbox και αντίστοιχα κάνω update στη βάση.

    Το πρόβλημα που αντιμετωπίζω είναι ότι σε κάθε button click το Items.Count του datagrid είναι 0, χάνοντας έτσι το περιεχόμενο των textbox.

    Τι μπορεί να φταίει?

     

     


    Θρυλικός Προγραμματιστής
  •  16-02-2006, 18:48 9797 σε απάντηση της 9787

    Απ: Datagrid - Editing Multiple Rows At Once

    Δεν κατάλαβα ακριβώς ποιο είναι το πρόβλημα σου. Δεν μπορείς να πάρεις τα δεδομένα των TextBox για να κάνεις update ή αφού κάνεις το update δεν ξανα-γεμίζει το DataGrid με στοιχεία; Επίσης, τα TextBox είναι εντός του DataGrid ή είναι τελείως εξωτερικά control; Επίσης, γιατί ελέγχεις για το PostBack στο Unload και όχι στο Load;

    Αν μπορείς κάνε Post τον κώδικα που εκτελεί το update και το σημείο στο οποίο το Items.Count είναι 0.
    Στερνή μου γνώση να σε είχα πρώτα...
  •  16-02-2006, 21:31 9803 σε απάντηση της 9797

    Απ: Datagrid - Editing Multiple Rows At Once

    Sorry αν σας μπέρδεψα,

    Kάτι πολύ σημαντικό που παρέβλεψα να αναφέρω είναι ότι το datagrid βρίσκετε σε user control, το οποίο με την σειρά του βρίσκετε σε άλλο user control. Άρα έχουμε την εξής δομή

    Page
        User Control
             User Control
                  DataGrig


    Ο κώδικας του datagrid για τα textbox είναι

    <asp:TemplateColumn HeaderText="Quantity">
    <ItemTemplate>
        <asp:TextBox id="Quantity" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "quantity") %>' Width="40px" EnableViewState="True"></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateColumn>

    και για το Button

    private void UpdateButton_ButtonClick(object sender, System.EventArgs e)
    {
        Response.Write(DtGrid.Items.Count.ToString());

        for (int i=0; i < DtGrid.Items.Count; i++)
        {
            TextBox quantityTxt = (TextBox) DtGrid.Items[ i].FindControl("Quantity");
            Label ProductID = (Label) DtGrid.Items[ i].FindControl("ProductID");

            try
            {
                quantity = Int32.Parse(quantityTxt.Text);

                if (quantity != (int)DtGrid.DataKeys[ i])
                {
                    if (quantity == 0)
                    {           
                        RemoveItem(Int32.Parse(lblProductID.Text));
                     }
                     else
                     {
                         UpdateItem(Int32.Parse(lblProductID.Text),quantity);
                     }
                 }
             }
            catch
            {
       
            }
        }
    }


    To Items.Count = 0 φαίνεται στην κλίση της παραπάνω συνάρτηση


    Επίσης δεν είναι Unload αλλά OnLoad, λάθος μου.....


    Μήπως το πρόβλημα προκύπτει λόγο των usercontrol, καί έτσι χάνετε το Reference  στο grid?





     
         


    Θρυλικός Προγραμματιστής
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems