33 messaggi dal 08 gennaio 2014
Ciao a tutti, vorrei poter richiamare un un controllo web (RadioButtonList) attraverso una variabile.
Ho provato con:

.aspx:
<asp:RadioButtonList ID="radVideo1Parz1" runat="server" RepeatDirection="Vertical"></asp:RadioButtonList>


.cs:
string stringaNomeCnotrollo="radVideo1Parz1";

RadioButtonList textte = (RadioButtonList)this.FindControl(stringaNomeCnotrollo);
in cui "stringaNomeCnotrollo" è la variabile stringa che contiene il nome del controllo web
ma non funziona, textte risulta null.....

Ho l'esigenza di usare una variabile perché in verità il nome del controllo(radVideo1Parz1) viene recuperato dal database.

Please aiutatemi
Grazie mille
98 messaggi dal 13 febbraio 2016
Buon pomeriggioshozocsharp,
il tuo codice funziona perfettamente, ovviamente dei effettuare il metodo Findcontrol dopo che la pagina sia stata caricata.
Infatti, aggiungendo ad esempio un button alla pagina, nell'evento click puoi eseguire tranquillamente il tuo codice.

Ciao
33 messaggi dal 08 gennaio 2014
Ciao, Pillopo grazie ma avrei la necessità di richiamare il controllo all' on Page_Load...

Grazie

Shozo
98 messaggi dal 13 febbraio 2016
shozocsharp ha scritto:
Ciao, Pillopo grazie ma avrei la necessità di richiamare il controllo all' on Page_Load...

Grazie

Shozo


Ma il codice che hai condiviso va bene anche nell'evento Page_Load.
Devi assicurarti di non richiamare il metodo FindControl prima che il controllo sia stato caricato.
Prova ad utilizzare una nuova pagina inserendo solo il controllo RadioButtonList e metti il tuo codice nel Page_Load, vedrai che recuperi il controllo tranquillamente.
33 messaggi dal 08 gennaio 2014
Come faccio ad assicurarmi che il Fincontrol() non venga richiamato prima?

Ecco il codice:
protected void riempiQuestionario()
{
//RECUPERO RISPOSTE DELL'UTENTE DAL DB:
string sqlRisposteDB = "select * from elearningutentiresult where userOid='" + UserOidRecuperato + "' order by VideoNR, parzialeNR";
MySqlConnection ConnDB = new MySqlConnection();
DataTable tabellaDB = sqlSelect.SqlSelGlobalDatatable(sqlRisposteDB, ConnDB);


string videoNRDB = "";
string parzialeNRDB = "";
string nomeCOntrollo = "";


foreach (DataRow r in tabellaDB.Rows)
{
videoNRDB = (string)r["VideoNR"].ToString();
parzialeNRDB = (string)r["parzialeNR"].ToString();
nomeCOntrollo = "dynamicRadLstVideo" + videoNRDB + "Parz" + parzialeNRDB;



RadioButtonList textte = (RadioButtonList)this.FindControl(nomeCOntrollo);

textte.SelectedValue = "2";
}
}
98 messaggi dal 13 febbraio 2016
Ti basta mettere il metodo riempiQuestionario() nel metodo Page_Load della pagina.

Se in una iterazione del ciclo, textte dovesse risultare null, prova a scrivere il valore di nomeCOntrollo in una label sempre nella stessa pagina per vedere quale controllo ha problemi.

La composizione della stringa nomeCOntrollo sei sicuro che sia giusta?
33 messaggi dal 08 gennaio 2014
Ho tamponato il problema creando i controlli dinamicamente e sono riuscito a preselezionare il radiobuttonlist, ma ora lo stesso problema mi si ripresenta recuperando i valori...



.aspx:

<asp:Panel ID="pnlVideo1Parz1" runat="server" Visible="true">
<tr>
<td colspan="2">
<table>
<tr>
<td id="tdLblVideo1Parz1" runat="server">

</td>

<td >
<asp:PlaceHolder ID="tdRadioBtmLstVideo1Parz11" runat="server">
</asp:PlaceHolder>
</td>
<td>
<asp:Button ID="btmVideo1Parz1" runat="server" Text="Submit" OnClick="btmVideo1Parz1_Click" />
</td>
</tr>
</table>
</td>
</tr>
</asp:Panel>



.cs:

System.Web.UI.WebControls.RadioButtonList dynamicRadioBtmListVideo1Parz1 = new System.Web.UI.WebControls.RadioButtonList();
dynamicRadioBtmListVideo1Parz1.ID = "dynamicRadLstVideo1Parz1";
// dynamicRadioBtmListVideo1Parz1.AutoPostBack = "True";
dynamicRadioBtmListVideo1Parz1.DataSource = tabellaComportam;
dynamicRadioBtmListVideo1Parz1.DataTextField = "risposte";
dynamicRadioBtmListVideo1Parz1.DataValueField = "oid";


//VERIFICA GIA' COMPILATO:
string vericaEsistenzaDB = sqlSelect.RecuperaCampo("select rispostaOid from elearningutentiresult where userOid='" + UserOidRecuperato + "' and videoNR='1' and parzialeNR='1'");
if (!string.IsNullOrEmpty(vericaEsistenzaDB))
{
dynamicRadioBtmListVideo1Parz1.SelectedValue = vericaEsistenzaDB;
}
//END VERIFICA GIA' COMPILATO_________________________________

dynamicRadioBtmListVideo1Parz1.DataBind();
tdRadioBtmLstVideo1Parz11.Controls.Add(dynamicRadioBtmListVideo1Parz1);


Ho provato di tutto.... Ad esempio:
- https://www.youtube.com/watch?v=aIoKhwrhaks
- http://www.c-sharpcorner.com/uploadfile/8911c4/how-to-create-and-read-values-of-dynamic-controls-in-asp-net/


Ma nulla, non vuole proprio andare...

Shozo Lojacono
Modificato da shozocsharp il 09 settembre 2016 16.53 -
Modificato da shozocsharp il 09 settembre 2016 16.55 -
98 messaggi dal 13 febbraio 2016
Ti ho fatto un piccolo esempio con una pagina che al suo caricamento aggiunge dinamicamente due controlli RadioButtonList e all'evento click di un button recupera i valori degli elementi selezionati e li visualizza in una label.

Ecco qui l'esempio.

Spero possa esserti utile.
Ciao

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.