Tabella dinamica
elisacarli non è online. Ultima attività: 25/07/2008 7.34.37elisacarli
Inserito il: 22 maggio 2008 15.12
50 messaggi dal 01 feb 2007 Istalla Microsoft Silverlight!
Ciao a tutti

Devo creare una tabella che aggiunge a runtime righe in una pagina aspx
Ho aggiunto una tabela vuota ed un bottone con lo script sotto riportato, che genera una nuova righe con due celle contenenti un campi di testo.
Scrivo nel viewstate il numero delle celle , per ricreare la tabella durante i postback
Il problema è che non so come fare per conservare i valori dei campi di testo durante il postback.
Ringrazio per ogni suggerimento


public partial class prova : System.Web.UI.Page
{

// proprietà che memorizza le righe
protected int Righe
{
get
{
return ViewState["Righe"] != null ? (int)ViewState["Righe"] : 0;
}
set
{
ViewState["Righe"] = value;
}
}

protected void Page_Load(object sender, EventArgs e)
{
CreaIntestazione();
}


protected void btnGenerate_Click(object sender, EventArgs e)
{
AggiungiRiga();

}

private void CreaIntestazione(){
TableRow tr = new TableRow();
TableCell tc1 = new TableCell();
Literal ltl1 = new Literal();
ltl1.Text="Titolo";
tc1.Controls.Add(ltl1);
tr.Cells.Add(tc1);
tbl.Rows.Add(tr);

TableCell tc2 = new TableCell();
Literal ltl2 = new Literal();
ltl2.Text="Descrizione";
tc2.Controls.Add(ltl2);
tr.Cells.Add(tc2);
tbl.Rows.Add(tr);
}
private void AggiungiRiga()
{
int tblRows = Righe;
for (int i= 0; i <= tblRows; i++)
{
TableRow tr = new TableRow();
for (int j = 0; j < 2; j++)
{
TableCell tc = new TableCell();
TextBox txtBox = new TextBox();
txtBox.Text = "RowNo:" + "ColumnNo:" + " " + j;
// Add the control to the TableCell
tc.Controls.Add(txtBox);
// Add the TableCell to the TableRow
tr.Cells.Add(tc);
}
// Add the TableRow to the Table
tbl.Rows.Add(tr);
}

this.Righe=tbl.Rows.Count-1; //la prima riga è l'intestazione
ViewState["dynamictable"] = true;
}

protected override void LoadViewState(object earlierState)
{
base.LoadViewState(earlierState);
if (ViewState["dynamictable"] == null)
AggiungiRiga();
}


}
Microsoft Most Valuable Professional
Re: Tabella dinamica
SM15455 non è online. Ultima attività: 25/07/2008 9.05.23SM15455
Inserito il: 22 maggio 2008 15.18
contributi / Top Poster / Community manager / Blog / 2515 messaggi dal 06 set 2002 Istalla Microsoft Silverlight!
Ciao,

ma con un repeater non più semplice? ti crei un arraylist con tanti elementi quante sono le righe che devi disegnare e lo assegni al datasource del repeater. in questo modo non devi generare nulla da codice.

HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Re: Tabella dinamica
elisacarli non è online. Ultima attività: 25/07/2008 7.34.37elisacarli
Inserito il: 22 maggio 2008 17.07
50 messaggi dal 01 feb 2007 Istalla Microsoft Silverlight!
Ciao

Grazie per la risposta

Il problema c'è anche con il repeater.
Io devo aggiungere righe al repeater cliccando su un bottone e non sull'evento page load.
Tutte le volte che clicco sul bottone scateno un evento PostBack che mi cancella tutto ciò che ho creato dinamicamente, se non lo salvo ed io non so come fare a salvarlo. Sotto il codice che ho scritto (da modificare) riferito ad un 'asseganzione fissa. In realtà è l'utente che scrive dentro i campi di testo e l'assegnazione dei valori non avviene mediante codice


parte ASP

public partial class DinamicoConRepeater : System.Web.UI.Page
{
private ArrayList valori= new ArrayList();

// proprietà che memorizza i Valori
protected ArrayList pValori
{
get
{
return (ArrayList)ViewState["Valori"];
}
set
{
ViewState["Valori"] = value;
}
}

protected void Page_Load(object sender, EventArgs e)
{

}


protected void Button1_Click(object sender, EventArgs e)
{
valori.Add(new Valori("Commerciale","Carlo Rossi"));
valori.Add(new Valori("Direttore","Luigi Verdi"));
this.rpt1.DataSource=valori;
this.rpt1.DataBind();
this.pValori=valori;
}

// Classe valori
private class Valori{
private string titolo;
private string descrizione;
public Valori(string titolo, string descrizione)
{
this.titolo = titolo;
this.descrizione = descrizione;
}
public string Titolo
{
get{
return titolo;
}
}

public string Descrizione
{
get{
return descrizione;
}
}
}//end class


}



PARTE HTML

<form id="Form1" runat="server">

<b>
Repeater1:</b>
<p>
<asp:Repeater id="rpt1" runat="server">
<HeaderTemplate>
<table border=1>
<tr>
<td><b>Titolo</b></td>
<td><b>Descrizione</b></td>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td>
<asp:TextBox ID="txt1" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"Titolo")%>></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txt2" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"Descrizione")%>></asp:TextBox>

</td>
</tr>
</ItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

</form>
Microsoft Most Valuable Professional
Re: Tabella dinamica
SM15455 non è online. Ultima attività: 25/07/2008 9.05.23SM15455
Inserito il: 23 maggio 2008 09.57
contributi / Top Poster / Community manager / Blog / 2515 messaggi dal 06 set 2002 Istalla Microsoft Silverlight!
Ciao,

non puoi salvarti i dati nel viewstate?

HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy

Vai a:

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.


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums