152 messaggi dal 15 luglio 2003
Salve ragazzi, il mio problema è questo:
Ho una gridView con un editTemplate che contiene un campo con una DropDownList.

<asp:TemplateField HeaderText="SIC_NEW">
<ItemTemplate>
<asp:Label ID="lblSIC_NEW" Text='<%# Eval("SIC_NEW") %>'runat="server">
</asp:Label>

</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddl_SIC_NEW" runat="server"
DataTextField="SIC_NEW" DataValueField="SIC_NEW" AutoPostBack="true">
<asp:ListItem value="1" selected="True">SI</asp:ListItem>
<asp:ListItem value="0" >NO</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>

Quando mi parte l'evento:

GridView_RowUpdating(object sender, GridViewUpdateEventArgs e)

OracleConnection oConn = ConnessioneOracle();
oConn.Open();
OracleCommand cmd = oConn.CreateCommand();
cmd.Parameters.Add(":sic_new", OracleType.VarChar).Value=(DropDownList)GridView.Rows[e.RowIndex].Cells[21].Controls[0]).SelectedValue;


mi da l'errore:

Impossibile eseguire il cast di oggetti di tipo 'System.Web.UI.LiteralControl' sul tipo 'System.Web.UI.WebControls.DropDownList'.


E' possibile risolvere il problema o mi devo rassegnare a metterci un semplice BoundField e fare il cast come TextBox?
Grazie confido in voi



Modificato da lucano il 04 dicembre 2008 16.51 -
e quindi?

imperugo
Microsoft MVP
myblog : http://www.tostring.it
152 messaggi dal 15 luglio 2003
Scusate ma mi era partito il post del messaggio prima che finissi di scriverlo
Vuol dire che
GridView.Rows[e.RowIndex].Cells[21].Controls[0]

restituisce un LiteralControl invece di una DropDownList e quindi il cast fallisce.

BTW, ti consiglio di non usare questo approccio, bensì ti ottenere reference ai controls della riga tramite il loro Id:
GridViewRow row = GridView.Rows[e.RowIndex];
DropDownList ddl = (DropDownList) row.FindControl("myDropDownList");


Ciao,
m.
152 messaggi dal 15 luglio 2003
Grazie Cradle, in effetti nel caso del DropDownlist la collection di Controls ha 3 elementi quindi quello che serviva a me(DropDownList) era sul secondo elemento quindi Controls[1], ma come dici tu la cosa migliore da fare è metterci direttamente l'id così non si sbaglia.
Grazie ancora
Modificato da lucano il 04 dicembre 2008 21.36 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.