35 messaggi dal 06 ottobre 2004
Sto utilizzando l'esempio #710 - Aggiungere colonne al DataGrid a runtime
ma mi sono bloccato alla Function AddTemplateColumn nel caso dovessi aggiungere
dei controlli CheckBox.
Ho una tabella sql dove sono presenti dei campi bit (0/1) e volevo appunto
rappresentarli in un DataGrid creando le colonne CheckBox a runtime.
E' da un pò che mi sono bloccato;
Per caso qualcuno potrebbe darmi un pò di codice VB ?

Grazie comunque.

rv
in modo semplice potresti creare un UserControl (estensione ascx) che cntenga un CheckBox, poi impostare il valore delle CheckBox al'interno dell'UserControl con una proprietà.

così puoi passare il percorso dell'UserControl al metodo LoadTemplate.

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
35 messaggi dal 06 ottobre 2004
... un esempio? Chiedo troppo?
Lo user control l'ho creato però non fo idea come fare il resto.

ciao.

rv
il problema che riscontravi se non erro era quà:
Private Function AddTemplateColumn(ByVal Etichetta As String, ByVal DataField_O As DataColumn, ByVal NomeTamplate As String) As Object
  Dim CT_new As New TemplateColumn()

  CT_new.HeaderText = "E_MAIL"
  CT_new.Visible = True
  'CARICO IL TEMPLATE
  CT_new.ItemTemplate = Page.LoadTemplate(NomeTamplate)
  AddTemplateColumn = CT_new

End Function


al posto di NomeTemplate dovrebbe essere sufficente spicificare il percorso dell'UserControl

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
35 messaggi dal 06 ottobre 2004
Niente da fare. Ho anche provato con una TextBox al posto della CheckBox.
Il problema è che nel DataGrid le colonne ci sono, ma semplicemente non vengono valorizzate.
Che il problema sia nel DataBind() ?

rv
35 messaggi dal 06 ottobre 2004
... oppure il problema è nello UserControl?
Ci devo mettere del codice nell'evento Load ?

Ciao.

rv
puoi postare del codice d'esempio?

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
35 messaggi dal 06 ottobre 2004
Ecco il codice che utilizzo.
L'ho preso fra gli esempi in questo sito e funziona tutto perfettamente tranne che per TemplateColumn che mi fà vedere la colonna con il CheckBox nella griglia ma non è valorizzato. Ho provato anche con un TextBox ma niente da fare.
Tieni presente che il controllo utente CheckBox.ascx contiene solo il ChechBox e niente altro; non ho aggiunto nessun codice nel Load.

<font size="2">
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        carica_griglia()

    End Sub

    Sub carica_griglia()
        griglia.Dispose()
        strSQL = "select * from tabella"
        Conn_Database()
        DtAdpRecord = New SqlClient.SqlDataAdapter(strSQL, ConnSQL)
        DtsRecord = New DataTable("tabella")
        DtAdpRecord.Fill(DtsRecord)
        griglia.DataSource = DtsRecord
        
        formatta_griglia()

        griglia.DataBind()
        DtAdpRecord.Dispose()
        DtsRecord.Dispose()
        Disconn_Database()
    End Sub

    Sub formatta_griglia()
        With griglia
            .AutoGenerateColumns = False
            .AllowSorting = True
            .AllowPaging = True
            .PageSize = 30
            .Columns.Add(AddGhostColumn(DtsRecord.Columns("campo1")))
            .Columns.Add(AddSortColumn("campo2", DtsRecord.Columns("campo2")))
            .Columns.Add(AddTemplateColumn("campoCheck", DtsRecord.Columns("campoCheck"), "CheckBox.ascx"))
        End With
    End Sub

    Private Function AddGhostColumn(ByVal Colonna As DataColumn) As Object
        Dim newcol As New BoundColumn
        With newcol
            .DataField = Colonna.ColumnName
            .Visible = False
        End With
        AddGhostColumn = newcol
    End Function

    Private Function AddSortColumn(ByVal Etichetta As String, ByVal Colonna As DataColumn) As Object
        Dim newcol As New BoundColumn
        With newcol
            .DataField = Colonna.ColumnName
            .SortExpression = Colonna.ColumnName
            .Visible = True
        End With
        AddSortColumnLeft = newcol
    End Function

    Private Function AddTemplateColumn(ByVal Etichetta As String, ByVal Colonna As DataColumn, ByVal NomeTemplate As String) As Object
        Dim CT_new As New TemplateColumn
        CT_new.HeaderText = "campoCheck"
        CT_new.Visible = True
        CT_new.ItemTemplate = Page.LoadTemplate("CheckBox.ascx")
        AddTemplateColumn = CT_new
    End Function
</font>


Grazie e ciao.

rv

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.