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

 

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

Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος epp1123 στις 22-05-2008, 15:46. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-05-2008, 14:08 42148

    Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Καλησπέρα, θα ήθελα να ελέγξω αν υπάρχουν δεδομένα στον πίνακα,  όταν το <asp:SqlDataSource> έχει μία SelectCommand. Αυτόν τον έλεγχο θέλω να τον κάνω μέσα από τη VB, αλλά δε ξέρω ποιες είναι οι μέθοδοι και τα properties που πρέπει να χρησιμοποιήσω
  •  22-05-2008, 14:25 42149 σε απάντηση της 42148

    Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Αν και δεν έχω δουλέψει σχεδόν ποτέ με το SqlDataSource, ένας εύκολος τρόπος θα ήταν να κάνεις hook το Selected event και να βλέπεις τα affectedrows.

    π.χ.

    protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
    {
    label1.Text=e.AffectedRows.ToString();

    ή

    mySuperNinjaTable.Visible=(e.AffectedRows > 0);


    }

     


    The people of the straight land have really got it made, a warm friendly sleep from the craddle to the grave
  •  22-05-2008, 14:35 42150 σε απάντηση της 42149

    Απ: Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Αυτό που θέλω να κάνω είναι να γίνεται ένας έλεγχος αν υπάρχουν δεδομένα στον πίνακα, και αν ΔΕΝ υπάρχουν τότε το FormView θα έχει ως DefaultMode το  Edit
  •  22-05-2008, 15:03 42154 σε απάντηση της 42150

    Απ: Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Το DefaultMode ή το CurrentMode? Το CurrentMode επηρεάζει το Mode στο οποίο είναι το FormView τώρα, το DefaultMode πως θα είναι μετά από ένα Insert, Edit κλπ. Τί προσπαθείς να κάνεις?

    Μπορείς πάντως να ελέγξεις το DataItemCount property του FormView για να δεις πόσα records έχουν επιστρέψει. Γενικά, το SQLDataSource και όλα τα άλλα DataSources του ASP.NET δεν παρέχουν πρόσβαση στα δεδομένα της βάσης, αλλά τραβάνε αυτά τα δεδομένα κατά το data binding και τα στέλνουν στα controls. Δεν μπορείς να ρωτήσεις το DataSource πόσα records υπάρχουν γιατί δεν τα κρατάει. Μπορείς όμως να χειριστείς το DataBound event του FormView για να δεις πόσα records φορτώθηκαν κατά το data binding.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-05-2008, 15:10 42156 σε απάντηση της 42154

    Απ: Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Θέλω μέσα από το asp:FormView να ελέγχω ένα σύνολο εγγραφών και να τις κάνω edit, delete και όταν θέλω να εισάγω μία νέα εγγραφή να κάνω insert. Απλά θέλω να γίνεται ένας έλεγχος πρώτα και αν ο πίνακας είναι άδειος, τότε το view να είναι το Insert για να εισάγω δεδομένα.
  •  22-05-2008, 15:15 42158 σε απάντηση της 42150

    Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Χμ, για να δω αν κατάλαβα καλά το σενάριο:

    Έχεις μια φόρμα με ένα SQLDataSource που παίρνει προφανώς κάποιες παραμέτρους για να εκτελεί το select command που αυτό με την σειρά του ενημερώνει κάποια bound πεδία, σωστά; Και αν κατάλαβα καλά δεν χρησιμοποιείς codebehind σελίδες επίσης.

    Ο εύκολος τρόπος να το στήσεις αυτό είναι να βάλεις το εξής κάπου μέσα στον κώδικα σου:

    <script language="VB" runat="server">

    Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected
    If e.AffectedRows = 0 Then
    FormView1.ChangeMode(FormViewMode.Insert)
    End If
    End Sub

    </script>

    Πρακτικά, αυτό που κάνεις είναι να δημιουργήσεις ένα event handler για το selected event του datasource σου (δηλ. το παραπάνω κομμάτι κώδικα θα τρέχει κάθε φορά που θα ολοκληρώνεται ένα select command) στο οποίο βασικά κάνεις έναν έλεγχο για το πόσες γραμμές δεδομένων σου επιστρέφει το select σου και πράτει ανάλογα (by the way, αν έχεις ένα FormView bound σε datasource το οποίο δεν έχει δεδομένα και το βάλεις σε edit mode όπως ζητάς το control δεν θα κάνει render :( )


    The people of the straight land have really got it made, a warm friendly sleep from the craddle to the grave
  •  22-05-2008, 15:30 42159 σε απάντηση της 42158

    Απ: Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Αυτό ακριβώς ήθελα, ευχαριστώ πολύ. Όσο για το ερώτημα σου, απλά θέλω να υπάρχει ο έλεγχος. Αυτό που λες ισχύει.
  •  22-05-2008, 15:32 42160 σε απάντηση της 42156

    Απ: Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

    Το FormView έχει το EmptyDataText με το οποίο μπορείς να πεις στο χρήστη ότι δεν υπάρχουν δεδομένα και το EmptyDataTemplate property αν θέλεις να δείξεις κάτι παραπάνω π.χ. εικόνες ή άλλα controls. Μήπως αυτά αρκούν για να κάνεις τη δουλειά σου γρήγορα? Επίσης, δοκίμασες να ελέγξεις τί γίνεται στο DataBound event? Πάντως, είτε κάνεις τον έλεγχο για τιμές στο FormView.DataBound είτε στο SQLDataSource.Selected, το αποτέλεσμα είναι το ίδιο. Η μόνη διαφορά είναι ότι ο κώδικας στο DataBound δουλεύει με οποιοδήποτε DataSource χωρίς αλλαγές ενώ ο κώδικας στο Selected δουλεύει μόνο όταν έχεις SQLDataSource. Δεν δουλεύει π.χ. όταν έχεις LinqDataSource


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-05-2008, 15:46 42163 σε απάντηση της 42160

    Απ: Re: Έλεγχος αν ο πίνακας έχει δεδομένα - <asp:SqlDataSource>

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