12 messaggi dal 01 febbraio 2006
ho provato a passare il datafield tramite una variabile di sessione..

Ora però come faccio a Metterla nel tag <%# Eval("...") %>???

quell'espressione richiama DataBinder.Eval giusto??

se è così allora cosa ci devo mettere come parametri? il secondo è il datafield ok.. ma il primo è l'oggetto container ed ho provato a metterci l'objectdatasource, la gridview, e.ObjectInstance nell ObjectCreated Event, e.ReturnValue nel Select event.. ma non funziona.. (ritorna null)
il metodo che hai usato per caricare la template è corretto.
per passare il nome del campo da "bindare", l'unica idea che mi viene in mente è quella di gestire l'evento DataBinding della CheckBox da li recuerare un riferimento al DataItem del Conteiner (mi sfugge quello del GridView ma con il debug lo puoi facilmente capire), prima devi dotare il tuo UserControl però di una proprietà per passare il nome del campo. mi sono espresso da cane ma spero ti aiuti per chiarimenti sono sempre quà :D

mi sono inoltre ricordato di questo vecchio articolo http://msdn.microsoft.com/library/default.asp?url=/msdnmag/issues/02/01/cutting/toc.asp

anche se scritto per asp.net 1.x i concetti base non cambiano.

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

http://nostromo.spaces.live.com/default.aspx
12 messaggi dal 01 febbraio 2006
ce l'avevo fatta in un altro modo, ma il tuo mi sembra più lineare..

solo che non riesco proprio a capire quale sia il Container.DataItem del gridview o dell'objectdatasource.. come posso capirlo???


Altrimenti, io avevo passato il nome con la Session e nell'ascx ho messo <%# Eval(myDataBind()) %>

Magari provo ad usare i parameters se riesco.. Sono appena passato al framework .net 2.0 e non sono ancora molto ferrato (si vede eh..) ;)

ora resta solo da capire perchè quando modifico la colllection columns della gridview nell'evento selected dell objectdatasource associato, mi richiama il databind....

tanto per farti capire l'evento è questo:

protected void ObjectDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
DataTable table = e.ReturnValue as DataTable;
if (table == null) return;

this.GridView1.Columns.Clear();
foreach (DataColumn col in table.Columns)
{
if (col.ColumnName == "Studente")
{
BoundField c = new BoundField();
c.DataField = col.ColumnName;
c.HeaderText = col.ColumnName;
c.SortExpression = col.ColumnName;
c.ReadOnly = true;

this.GridView1.Columns.Add(c);
}
else
{
TemplateField c = new TemplateField();
c.ItemTemplate = Page.LoadTemplate("AbsenceClassRegisterTemplate.ascx");
Session["DataField"] = col.ColumnName;
c.HeaderText = col.ColumnName;
c.SortExpression = col.ColumnName;

this.GridView1.Columns.Add(c);
}
}
}
Modificato da shadow7853 il 27 dicembre 2006 12.49 -
hai già disattivato la creazione dinamica delle colonne vero?

non vorrei che non fosse l'evento adatto a fare queste cose.

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
12 messaggi dal 01 febbraio 2006
si l'ho disattivata.. non so ora cerco un po' se c'è qualcuno col mio problema..
allora mettiamo di avere un semplice UserControl così:

<asp:CheckBox ID="CheckBox1" runat="server" OnDataBinding="CheckBox1_DataBinding" />


nell'event handler dovresti avere qualcosa di simile:


//Checkbox
        WebControl _webControl = (WebControl)sender;
        //UserControl
        UserControl _userControl = (UserControl)_webControl.NamingContainer;
        //GridViewRow
        GridViewRow _gridViewRow = (GridViewRow)_userControl.NamingContainer;
        //i dati
        object _dataItem = _gridViewRow.DataItem;   


comunque credo che l'evento Selected del ObjectDataSorce purtroppo non sia utilizzabile per aggiungere la colonna.

ciao marco

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

http://nostromo.spaces.live.com/default.aspx

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.