65 messaggi dal 14 ottobre 2008
ciao ragazzi.
ho un problema.
in una gridview ho inserito al posto di una colonna del db delle textbox,
mi serve sapere come fare per renderle modificabili o meno a seconda che nel db ci sia un certo dato.
grazie in anticipo
Un modo potrebbe essere quello di gestire l'evento RowDataBound della griglia: su
e.Row.DataItem

trovi l'oggetto in bind con quella riga (quindi con il dato che ti serve per discriminare se attivare o meno la textbox), mentre con
e.Row.FindControl(nomeTextbox)

puoi recuperare una reference a quest'ultima.

A quel punto non ti resta che impostare la proprietà enabled come meglio desideri.

Occhio che l'evento viene scatenato anche per header e footer, quindi verifica che e.Row.RowType sia un DataRow.

Ciao
devi gestire l'evento RowDataBound, recuperi il DataItem, controlli il valore che ti interessa,con FindControl recuperi la tua TextBox e ne imposti le proprietà

ciao marco

p.s. sorry marco non aevevo visto la tua risposta
Modificato da nostromo il 14 ottobre 2008 18.01 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
65 messaggi dal 14 ottobre 2008
come posso fare per utilizzare questo metodo?
innanzi tutto devi registrarti all'evento RowDataBound, lo puoi fare nel markuo o nel codice.

nel Markup è sufficente:

<asp:GridView OnRowDataBound="NomeDelMetod"/>

su come gestire l'eventi e la loro utilità trovi maggiori dettagli su msdm.

una volta che sei riuscito a creare l'eventhandler andiamo avanti

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
65 messaggi dal 14 ottobre 2008
eventHandler creato..
Ti seguo..
a questo punto:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox _textBox = e.Row.FindControl("TextBox2") as TextBox;

            if (_textBox != null)
            {
                if (DataBinder.Eval(e.Row.DataItem, "ContactName").ToString() == "Maria Anders")
                {
                    _textBox.BackColor = Color.Red;
                }
            }
        }
    }


nella prima riga controlli che la riga contenga dati, recuperi la TextBox con FindControl (come diceva Cradle ), fatto ciò passi a recuperare il valore del campo che ti interessa dalla fonte dati, per comodità ho usato Eval, ma dovresti castare al tipo della tua fonte dai, esegui il confronto e agisci di conseguenza.

per chiarmimenti siamo quà

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
65 messaggi dal 14 ottobre 2008
protected void GrdComponenti_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox TxbQtaScartata = e.Row.FindControl("TxbQtaScartata") as TextBox;
if (TxbQtaScartata != null)
{
if (DataBinder.Eval(e.Row.DataItem, "Consumo").ToString() == "X")
{
TxbQtaScartata.ReadOnly = true;
}
}

}

}

ora peròla textbox è sempre read only anche se il dato in Consumo non c'è..
come mai?
Modificato da streetman84 il 15 ottobre 2008 09.59 -

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.