Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Creazione\Gestione textbox dinamiche su ascx

    Ciao a tutti,
    sto sviluppando su Visual Studio 2008 un'applicazione web con c#.
    Ho una pagina Aspx su cui è appoggiato uno user control ascx. I controlli sull'ascx vengono creati dinamicamente quando l'ascx è reso visibile visto che il numero degli stessi è variabile in base ad alcuni dati che devo mostrare. Per farmi capire meglio posto il codice:

    public void displayUsrControl(string _codChange, string _desChange,int _numSplit, Elem _lista, int _oldSplit)
    {

    foreach (Elem _task in _lista)
    {
    for (int i = 0; i < _numSplit; i++)
    {

    //_posTop += 20;
    TextBox _text = new TextBox();
    _text.ID = "txtTask" + _task.IDTask + _task.IDApplicativo + i.ToString();
    _text.Enabled = false;
    _text.Style["Width"] = "300px";
    _text.Text = _task.CodDesApplicativo;
    _text.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
    HtmlTableRow tRow = new HtmlTableRow();
    HtmlTableCell tCell = new HtmlTableCell();
    tCell.Controls.Add(_text);
    tRow.Cells.Add(tCell);
    tblSplit.Rows.Add(tRow);

    _text = new TextBox();
    _text.ID = "txtTask" + _task.IDTask + _task.IDCompetenza + i.ToString();
    _text.Enabled = false;
    _text.Style["Width"] = "100px";
    _text.Text = _task.DESSkill;
    _text.TextChanged += new System.EventHandler(this.TextBox_TextChanged);

    tCell = new HtmlTableCell();
    tCell.Controls.Add(_text);
    tRow.Cells.Add(tCell);
    tblSplit.Rows.Add(tRow);

    _text = new TextBox();
    _text.ID = "txtTask" + _task.IDTask + "ggStima" + i.ToString();
    _text.Enabled = true;
    _text.Style["Width"] = "50px";
    if (_oldSplit != 0)
    _text.Text = Math.Round((Convert.ToDecimal(_task.GGStima) / _numSplit), 2).ToString();
    _text.TextChanged += new System.EventHandler(this.TextBox_TextChanged);

    tCell = new HtmlTableCell();
    tCell.Controls.Add(_text);
    tRow.Cells.Add(tCell);
    tblSplit.Rows.Add(tRow);


    }
    dgpanel.Controls.Add(tblSplit);

    }
    }


    Al momento riesco a creare i text box correttamente, il problema è che alcuni di questi (nello specifico i "ggStima" ) devono poter essere modificati dall'utente e quindi devo poterli controllare e salvare poi sul db. Come faccio dall'evento del code behind di un bottone asp rileggere i valori della pagina ?
    Ho provato con

    (TextBox)dgpanel.FindControl(_prefisso + _task.IDTask + "ggStima" + i.ToString());

    ma ricevuto un bel "null" anche se guardando dall'html della pagina l' ID che passo è corretto.. qualcuno ha qualche idea?

    Grazie mille
    B.

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    prova a fare un postback a vuoto (commentando tutto cio che hai nell'handler del pulsante) le modifiche che fai in quelle textbox te le ritrovi? o perdi tutto?

    edit:
    letto meglio il codice, ammesso che sia tutto ok, dall'esterno non puoi trovare direttamente le textbox con findcontrol. devi tirarti fuori con findcontrol a ritroso tutti i controlli che contengono le textbox (il panel-la tabella-la riga-la cella). arrivato al container delle textbox puoi finalmente leggerle dalla collection controls o utilizzando nuovamente findcontrol.

    Se invece vuoi semplificarti la vita, ti crei una collection di TextBox pubblica nell'ascx, nel metodo le textbox le aggiungi ANCHE in questa collection e da "fuori" accedi direttamente alla collection invece che ai controlli interni.

    codice:
    public class TuoUC: UserControl
           public List<TextBox> SoloTextBox { get; set; }
    
            public pippo()
            {
                SoloTextBox = new List<TextBox>();
            }
    
    ...
    dalla pagina
    codice:
    var elencoTBs = TuoUC1.SoloTextBox; // da qui le selezioni anche con linq !

  3. #3
    la riga che hai scritto:
    codice:
    (TextBox)dgpanel.FindControl(_prefisso + _task.IDTask + "ggStima" + i.ToString());
    dove sta?
    che valori hai per _task e "i"?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.