Salve a tutti.
Mi sono imbattuto in un progetto web scritto in C#.
Il mio obiettivo è quello di creare un web custom control che renderizzi una Table(o la nasconda) alla pressione di un bottone.
Ho creato un file .js in cui ho scritto questa funzione:
function HideShow(id)
{
var row = document.getElementById(id);
if(row.style.display=='none')
{
row.style.display='block';
}
else
{
row.style.display='none';
}
}
Ho poi inseriro nell' OnPreRender della pagina la riga che verrà nascosta/mostrata alla pressione del bottone:
private TableRow _expandProcessListRow;
protected override void OnPreRender(EventArgs e)
{
//...
this._expandProcessListRow = new TableRow();
this._expandProcessListRow.ID = "_processListRowID";
this._expandProcessListRow.Style.Add(HtmlTextWrite rStyle.Display, "none");
// Nell'OnPreRender viene poi chiamato il metodo che mostra la tabella:
CreateTable();
}
Eccolo qui (in modo semplificato):
private Table CreateTable()
{
Table GroupedTable = new Table();
GroupedTable.BorderWidth = Unit.Pixel(0);
GroupedTable.CellPadding = 0;
GroupedTable.CellSpacing = 0;
GroupedTable.Style.Add(HtmlTextWriterStyle.Width, "100%");
TableRow HeaderRow = new TableRow();
TableCell HeaderCell = new TableCell();
//Questo è il bottone che scatenerà l'evento
ImageButton bottone = new ImageButton();
bottone.ImageUrl = this.Page.ClientScript.GetWebResourceUrl(this.GetT ype(), "Resources.Images.Expand.gif");
bottone .Attributes.Add("onclick", "javascript:HideShow('" + this._expandProcessListRow.ID + "');");
HeaderCell.Controls.Add(this._imageButton)
HeaderRow.Cells.Add(HeaderCell);
GroupedTable.Rows.Add(HeaderRow);
// Aggiungo un testo alla riga da mostrare/nascondere
TableCell processListCell = new TableCell();
processListCell.Text = "PROVA";
this._expandProcessListRow.Cells.Add(processListCe ll);
worklistItemGroupedTable.Rows.Add(this._expandProc essListRow);
}
Non mi funziona...commetto qualche errore?
Grazie

Rispondi quotando