Certo che c'ho provato... solo che non prende i valori, in debug i controlli sono vuoti. :master: Quindi volevo passarglieli.
Il problema è questo: io ho una serie di riferimenti, in base al bottone che clicco vengono mostrati dei campi piuttosto che altri, a questo punto esce un bottone,il cui event prende i valori inseriti e li manda tramite mail. Accade che i text ed i value dei controlli non vengono presi.
Ti allego un pò di codice:
in questa prima parte mostro solo alcuni controlli...
codice:
protected static RadioButtonList radio = new RadioButtonList();
protected static ListItem c1 = new ListItem();
protected static ListItem c2 = new ListItem();
protected static ListItem c3 = new ListItem();
protected static ListItem c4 = new ListItem();
protected static ListItem c5 = new ListItem();
protected static Literal t1 = new Literal();
protected static Literal t2 = new Literal();
protected static Literal t3 = new Literal();
protected static Literal t4 = new Literal();
protected static TextBox tb1 = new TextBox();
protected static TextBox tb2 = new TextBox();
protected static int sel = new int();
protected static DropDownList li = new DropDownList();
protected static ListItem c6 = new ListItem();
protected static ListItem c7 = new ListItem();
protected static ListItem c8 = new ListItem();
protected static ListItem c9 = new ListItem();
protected static ListItem c0 = new ListItem();
protected EventArgs e = new EventArgs();
public delegate void EventHandler(object sender,EventArgs e,RadioButtonList radio,TextBox tb1);
//public event EventHandler Click;
protected void onSond1(object sender, EventArgs e)
{
sel = 1;
t1.Text = "
Hai assaggiato il nostro caffè? Come lo giudichi?";
radio.ID = "radioButton";
radio.Items.Clear();
c1.Text = "Scarso";
c2.Text = "Mediocre";
c3.Text = "Sufficiente";
c4.Text = "Buono";
c5.Text = "Buonissimo";
c1.Value = "Hai assaggiato il nostro caffè? Come lo giudichi? - Scarso";
c2.Value = "Hai assaggiato il nostro caffè? Come lo giudichi? - Mediocre";
c3.Value = "Hai assaggiato il nostro caffè? Come lo giudichi? - Sufficiente";
c4.Value = "Hai assaggiato il nostro caffè? Come lo giudichi? - Buono";
c5.Value = "Hai assaggiato il nostro caffè? Come lo giudichi? - Buonissimo";
radio.Items.Add(c1);
radio.Items.Add(c2);
radio.Items.Add(c3);
radio.Items.Add(c4);
radio.Items.Add(c5);
t2.Text = "Commento:
";
tb1.ID = "textBox1";
tb1.MaxLength = 1024;
tb1.Columns = 60;
tb1.Rows = 5;
t3.Text = "
</p>";
spazietto.Controls.Add(t1);
spazietto.Controls.Add(radio);
spazietto.Controls.Add(t2);
spazietto.Controls.Add(tb1);
spazietto.Controls.Add(t3);
Submit1.OnClientClick = this.inviaSond(this, e, radio, tb1);
//Submit1.Click += new EventHandler(inviaSond);
//Submit1.Attributes["OnClick"] = "inviaSond(tb1,radio)";
//Submit1.Attributes["OnClick"] = "inviaSond(this,e,tb1,radio)";
Submit1.Visible = true;
Reset1.Visible = true;
}
Questo è l'evento che vorrei che prendessi i valori passati...
codice:
/*Invia una mail con i dati del sondaggio*/
protected void inviaSond(object sender,EventArgs e,RadioButtonList radio,TextBox tb1)
{
MailAddress from = new MailAddress("no-reply-Tu_cosa_ne_pensi@FlashCafe.com");
MailAddress to = new MailAddress("saverio@mediagroup98.com");
MailMessage mess = new MailMessage(from, to);
SmtpClient server = new SmtpClient("10.0.0.102", 25);
//if (sel == 1)
{
mess.Body = "\n" + radio.SelectedValue + "\nCommento:\n" + tb1.Text + "\n";
try
{
server.Send(mess);
}
catch (SmtpFailedRecipientsException ex)
{
for (int i = 0; i < ex.InnerExceptions.Length; i++)
{
SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
if (status == SmtpStatusCode.MailboxBusy ||
status == SmtpStatusCode.MailboxUnavailable)
{
Console.WriteLine("Delivery failed - retrying in 5 seconds.");
System.Threading.Thread.Sleep(5000);
server.Send(mess);
}
else
{
Console.WriteLine("Failed to deliver message to {0}", ex.FailedRecipient[i]);
}
}
}
}
}}