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

 

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

GridView RowDataBound Event - Access more than one row

  •  27-05-2014, 18:05

    GridView RowDataBound Event - Access more than one row

    Καλησπέρα σας,

    Θα ήθελα να ρωτήσω το εξής: Υπάρχει η δυνατότητα μέσα από το RowDataBound event ενός GridView να προσπελαύνω περισσότερα από ένα rows τη φορά; Βασικά όταν πάω να προσπελάσω το δεύτερο row (GridView1.Rows[1]) μου βγάζει το μήνυμα λάθους "index out of range". Για να γίνω πιο σαφής προσπαθώ να κάνω populate ένα dropdownlist control ανά GridViewRow. To populate γίνεται εξετάζοντας τις προηγούμενες τιμές στο dropdownlist ξεκινώντας από την πρώτη γραμμή του GridView. Σκοπός είναι σε κάθε νέο row του GridView το DropDownList να περιλαμβάνει μόνο τις απομένουσες τιμές , αφαιρώντας κάθε φορά αυτές που έχουν γίνει selected σε προηγούμενα row.

     Ενδεικτικός κώδικας, ο οποίος ελέγχει τις τιμές των dropdownlist των προηγούμενων row (όταν το RowIndex παίρνει τιμή μεγαλύτερη του 0 βγαίνει το μήνυμα λάθους "index out of range") 


    private IList <items> CheckPreviousRecordsForAddedItems() { int rowIndex = 0; IList <items> itms = items.GetItems(); IList<items> addtoBasket = new List<items> (); if (Session["CurrentTable"] != null) { DataTable dt = (DataTable)Session["CurrentTable"]; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count-1; i++) { DropDownList ddlItem = (DropDownList)GridView1.Rows[rowIndex].Cells[2].FindControl("ddlItem"); ddlItem.SelectedValue = dt.RowsIdea["ItemID"].ToString(); ddlItem.SelectedIndex = Convert.ToInt32(dt.RowsIdea["ID"]); items item = items.GetItem(itms, Convert.ToInt32(ddlItem.SelectedValue)); if (item != null) { addtoBasket.Add(item); } } rowIndex++; } } } return addtoBasket; }

    Κάθε βοήθεια είναι ευπρόσδεκτη.

    Ευχαριστώ εκ των προτέρων. 

    Δημοσίευση στην κατηγορία: ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems