το δεύτερο που ζητάς είναι πιο εύκολο. Χρειάζεσαι μια ondatabound για τη nested gridview (έχω χρόνια να γράψω σε C αλλά πάρε την ιδέα και φτιάξε το) :
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" GridLines="None" OnRowDataBound="GridView2_RowDataBound">
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e){
if (e.Row.RowType == DataControlRowType.DataRow){
listBox teamListBox= (listBox )e.Row.FindControl("usersTeam");
if (teamListBox.selectedValue == 2)
teamListBox.enabled = 0;
}
}
για να μην εμφανίζεται το listbox θα πρέπει να βάλεις και το label μέσα στο Gridview και ανάλογα να εμφανίζεις το ένα και να κρύβεις το άλλο.
Τώρα για το request εξαρτάται πότε θέλεις να το κάνεις και ποιας γραμμής το listbox θέλεις. Για παράδειγμα αν θέλεις να έχεις ένα κουμπί σε κάθε γραμμή και στο click να στέλνεις το request θα πρέπει να πάρεις το Indexrow και με findControl να βρεις την τιμή