30 messaggi dal 13 febbraio 2002
Ciao,
Ho una tabella in cui ci sono 5 campi.
La tabella è la seguente:
<asp:table id="TableSegnalazioni" runat="server">
<asp:TableRow>
<asp:TableCell Text="CodiceRichiesta" ID="CodiceRichiesta"></asp:TableCell>
<asp:TableCell Text="Richiesta" ID="Richiesta"></asp:TableCell>
<asp:TableCell Text="DataRichiesta" ID="DataRichiesta" ></asp:TableCell>
<asp:TableCell Text="Priorita" ID="Priorita"></asp:TableCell>
<asp:TableCell Text="Stato" ID="Stato" ></asp:TableCell>
</asp:TableRow>
</asp:table>

Ora dal mio Codebehind, carico i dati da un webService,
vorrei aggiungere le righe alla mia Tabella, con i dati del WebService.
Come posso fare? come linguaggio uso VB.
L'ideale sarebbe paginare la tabella dopo 10 righe.
Grazie.
Ciao.
Che tipo di dato ti ritorna il Web Service?

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
30 messaggi dal 13 febbraio 2002
Ciao,
dal webService mi ritornano 5 campi tipo stringa
Io ciclo con un for, e dovrei aggiungere i dati in Tabella.
Il tuo è un problema di data binding. Niente di particolarmente complicato...

Ma non ho ben capito se nel tuo caso stiamo parlando di 5 stringhe separate, di un array di stringhe, di un dataset da cui prendere 5 valori di tipo string, di array di tipi custom, ecc...

Ti invito ad essere esaustivo e chiaro, se vuoi che ti aiuti nel miglior modo possibile. Descrivi bene il tuo caso, magari dammi anche la/le firma/e del/dei Web Method e relativi tipi ritornati.

Ciao, Ricky.
Modificato da rickyvr il 27 gennaio 2005 11.09 -

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
30 messaggi dal 13 febbraio 2002
Io ho una pagina asp.net, dove richiamo un WebService, questo web service si collega ad un DataBase e mi fornisce 5 metodi ogni metodo contiene un dato in formato stringa.
Ad esempio: IdProblema, DescrizioneProblema, Stato, Priorita, DataCreazione.
Ora a me dal Web server ritornano 49 record ogni record è composto da questi 5 campi, ciclo sul webservice in questo modo:

For i = 0 To TicketList.Length() - 1
IdProblema =TicketList(i).IdProblema
DescrizioneProblema =TicketList(i).DescrizioneProblema
DataCreazione= TicketListi(i).DataCreazione()
Stato =TicketList(i).Stato
Priorita =TicketList(i).Priorita
Next

Con questi dati, devo andare a popolare una Tabella

Scusami se non sono chiaro, ma è da poco che uso asp.net
e non mi sono chiari i termini DataBilding e dataSet

L' Ideale sarebbe paginare la tabella dopo 10 record

Grazie
Mi pare di avere capito che tu disponi nel tuo codice di un array TicketList composto da elementi rappresentati da oggetti con 5 proprietà e/o campi pubblici (IdProblema, DescrizioneProblema, Stato, Priorita, DataCreazione).

Puoi utilizzare una DataGrid a cui associare direttamente l'array in questione come DataSource.

La DataGrid supporta un maniera nativa la paginazione dei dati (AllowPaging), la dimensione della pagina (PageSize) è un parametro che puoi settare come vuoi, nel tuo caso 10.

Per il Data Binding con gli elementi dell'array, usando le TemplateColumn nell'ambito della DataGrid, devi fare un cast esplicito al tipo dell'elemento dell'array e accedere alle proprietà di quest'ultimo (per esempio: DescrizioneProblema).

Se, per esempio, TicketList è un array di TicketListItem:

<%#Ctype(Container.DataItem, TicketListItem).DescrizioneProblema.ToString()%>


Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
30 messaggi dal 13 febbraio 2002
Io ho fatto una cosa del genere nell mio Codebehind.

Mi sono creato da solo la tabella: Come puoi vedere nella variabile scriptTable metto tutto il codice per creare la tabella, ma quando faccio response.write non mi stampa nulla come mai.?
Vedi codice


Public Class Segnalazioni
    Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents VisualizzaStatoTicket As System.Web.UI.WebControls.DropDownList
    Protected WithEvents TableSegnalazioni As System.Web.UI.WebControls.Table
    Protected WithEvents Form1 As System.Web.UI.HtmlControls.HtmlForm
    Protected WithEvents Panel As System.Web.UI.WebControls.Panel
    Protected WithEvents lblTabella As System.Web.UI.WebControls.Label

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim TicketList As UNIBO_TicketList.GetListOutputMapGetListValues()
        Dim TicketService As UNIBO_TicketList.UNIBO_TicketListService

        Dim qualification As String
        Dim i As Integer
        Dim authInfo As UNIBO_TicketList.AuthenticationInfo

        authInfo = New UNIBO_TicketList.AuthenticationInfo
        authInfo.userName = "Massimo"
        authInfo.password = "kid"

        TicketService = New UNIBO_TicketList.UNIBO_TicketListService
        TicketService.AuthenticationInfoValue = authInfo

        qualification = ""
        TicketList = TicketService.OpGetList(qualification)

        Dim scriptTable As String
        If TicketList.Length() > 0 Then
            'Prima Riga Tabella  INTESTAZIONE
            scriptTable = "<asp:table id=TableSegnalazioni runat=server Width=100%>" & _
                          "<asp:TableRow>" & _
                                  "<asp:TableCell HorizontalAlign=Center Text=Codice&lt;br&gt;Richiesta ID=CodiceRichiesta class=testataTabellaAutocomposta></asp:TableCell>" & _
                                  "<asp:TableCell HorizontalAlign=Center Text=Richiesta ID=Richiesta class=testataTabellaAutocomposta></asp:TableCell>" & _
                                  "<asp:TableCell HorizontalAlign=Center Text=Data&lt;br&gt;Richiesta ID=DataRichiesta class=testataTabellaAutocomposta></asp:TableCell>" & _
                                  "<asp:TableCell HorizontalAlign=Center Text=Priorita ID=Priorita class=testataTabellaAutocomposta></asp:TableCell>" & _
                                  "<asp:TableCell HorizontalAlign=Center Text=Stato ID=Stato class=testataTabellaAutocomposta></asp:TableCell>" & _
                          "</asp:TableRow>"

            '   For i = 0 To TicketList.Length() - 1
            For i = 0 To 2

                Dim ColorRow As String = "#EDEDED"
                Dim Resto As Integer = i Mod 2
                If Resto = 0 Then
                    ColorRow = "#FFFFFF"
                End If
                ' Righe Contenenti dati Ticket
                scriptTable = scriptTable + "<asp:TableRow>"
                scriptTable = scriptTable + "<asp:TableCell BackColor=" + ColorRow + " Text=""" + TicketList(i).Case_ID + """></asp:TableCell>"
                scriptTable = scriptTable + "<asp:TableCell BackColor=" + ColorRow + " Text=""" + TicketList(i).Summary + """></asp:TableCell>"
                scriptTable = scriptTable + "<asp:TableCell BackColor=" + ColorRow + " Text=""" + TicketList(i).Create_Time + """></asp:TableCell>"
                scriptTable = scriptTable + "<asp:TableCell BackColor=" + ColorRow + " Text=""" + TicketList(i).Case_ID + """></asp:TableCell>"
                scriptTable = scriptTable + "<asp:TableCell BackColor=" + ColorRow + " Text=""" + CStr(TicketList(i).Status) + """></asp:TableCell>"
                scriptTable = scriptTable + "</asp:TableRow>"
            Next
            'riga Chiusura Tabella
            scriptTable = scriptTable + "</asp:table>"
            Response.Write(scriptTable)
            lblTabella.Text = scriptTable
        End If
    End Sub

End Class
Se ti vuoi creare una tabella dinamicamente, non si fa creando una stringa che comprende i tag e facendo un Response.Write, ma si sfrutta la struttura ad oggetti e i controlli.

Se provi a guardare il codice HTML prodotto e visulizzato dal browser, vedrai che quello che scrivi dentro a scriptTable è presente...

In ogni caso non è questo il modo giusto per inserire a runtime un controllo in una pagina. Devi definire sulla UI un PlaceHolder, che serva da riferimento dove inserire la tabella prodotta a runtime. Una volta creata la tabella questa va inserita nella collection dei controlli del PlaceHolder. A runtime la tabella va creata usando le classi HtmlTable, HtmlTableRow, HtmlTableCell e i relativi metodi Add().

Detto questo, voglio sottolineare che farsi la tabella a runtime nel tuo caso non è il metodo giusto...

Devi disegnare i Web Method affinchè ti ritornino un dataset oppure (MEGLIO) un array di un tipo che rappresenta l'entità di interesse. Una volta fatto questo, Puoi utilizzare una DataGrid e il Data Binding come ti ho già spiegato prima.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it

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.