85 messaggi dal 04 marzo 2012
Salve,
sto sviluppando via web una specie di calendario per il carico lavoro, ho creato una gridview e riempita da codice, riempio le celle e le coloro in base agli impegni che corrispondono a dei record e fin qui tutto bene.

Adesso vorrei se possibile cliccando su una cella della gridview che corrisponde ad un impegno aprire lo stesso per poterlo modificare.
Come posso fare?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

table = New DataTable

column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = "Codice"
column.ReadOnly = False
column.Unique = False
table.Columns.Add(column)

column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = "Tecnico"
column.ReadOnly = False
column.Unique = False
table.Columns.Add(column)

For i = 1 To 31
column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = i.ToString
column.ReadOnly = False
column.Unique = False
table.Columns.Add(column)
Next



CaricaDipendenti()


Me.dgvCalendarioMese.DataSource = table

Me.dgvCalendarioMese.DataBind()

FormattaGrid(Me.dgvCalendarioMese)




End Sub


Public Sub CaricaDipendenti()
Try
Dim nome As DayPilot.Web.Ui.Resource
Dim i As Integer

Dim connectionString = ConfigurationManager.ConnectionStrings("DBHRConnectionString").ConnectionString
Using conn = New SqlConnection(connectionString)
conn.Open()
Using cmd = conn.CreateCommand()
cmd.CommandText = "SELECT ANSURNAM, ANNAME, hrdd_000001employee00.IDEMPLOY FROM hrdd_000001employee00 " & _
"Inner join hrdd_000001employee11 " & _
"on hrdd_000001employee00.IDCOMPANY = hrdd_000001employee11.IDCOMPANY " & _
"And hrdd_000001employee00.IDEMPLOY = hrdd_000001employee11.IDEMPLOY " & _
"WHERE hrdd_000001employee11.DTLAYOFF is null " & _
"ORDER BY ANSURNAM, ANNAME "

Using reader = cmd.ExecuteReader()
While reader.Read()
i = i + 1

row = table.NewRow()

row("Codice") = reader("IDEMPLOY")
row("Tecnico") = reader("ANSURNAM") & " " & reader("ANNAME")

CaricaDati(reader("IDEMPLOY"))

table.Rows.Add(row)

End While
End Using
End Using
End Using


Catch ex As Exception
ClsFileLog.ScriviLog(ex.Message, Session.Item("User"))
End Try
End Sub


Public Sub CaricaDati(ByVal Dipendente As String)
Dim GF As Integer
Dim GI As Integer
Dim GX As Integer
Dim i As Integer

Try

i = 0
For i = 2 To 32
row(i) = " "
Next

Dim connectionString = ConfigurationManager.ConnectionStrings("HTS_GestioneConnectionString").ConnectionString
Using conn = New SqlConnection(connectionString)
conn.Open()
Using cmd = conn.CreateCommand()
cmd.CommandText = "SELECT * FROM P_Eventi " & _
"WHERE Operatore = " & Dipendente & " " & _
"ORDER BY Inizio "

Using reader = cmd.ExecuteReader()
While reader.Read()

GI = Day(reader("Inizio"))
GF = Day(reader("Fine"))

GX = GI - 1
i = 0
For i = GI To GF
GX = GX + 1
row(GX.ToString) = reader("Cliente") & " " & reader("Note")
Next

End While
End Using
End Using
End Using

Catch ex As Exception
ClsFileLog.ScriviLog(ex.Message, Session.Item("User"))
End Try

End Sub
Public Sub FormattaGrid(ByRef dgv As GridView)
For i As Integer = dgvCalendarioMese.Rows.Count - 1 To 1 Step -1
Dim row As GridViewRow = dgv.Rows(i)
Dim CS As Integer
Dim saveCellaInizio As Integer

CS = 1
saveCellaInizio = 0
For j As Integer = 2 To row.Cells.Count - 1
If j < row.Cells.Count - 1 Then ' se non è l'ultimo record



If row.Cells(j).Text <> " " Then
If saveCellaInizio = 0 Then 'Salvo la prima cella
saveCellaInizio = j
End If
If row.Cells(j).Text = row.Cells(j + 1).Text Then

CS = CS + 1
row.Cells(saveCellaInizio).ColumnSpan = CS
row.Cells(j).BackColor = Drawing.Color.Aquamarine
row.Cells(j + 1).Visible = False
Else
CS = 1
saveCellaInizio = 0
End If
End If
Else

If row.Cells(j).Text <> " " Then
row.Cells(j).BackColor = Drawing.Color.Aquamarine
End If

End If
Next
Next

Protected Sub dgvCalendarioMese_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles dgvCalendarioMese.RowCreated

e.Row.Cells(0).Width = 50
e.Row.Cells(1).Width = 200

' e.Row.Cells(0).Height = 15


For x = 2 To 32
e.Row.Cells(x).Width = 25
e.Row.Cells(x).Height = 15
' e.Row.Cells(x).Wrap = False
Next
End Sub



End Sub
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Adesso vorrei se possibile cliccando su una cella della gridview che corrisponde ad un impegno aprire lo stesso per poterlo modificare.


"Aprirlo" in che modo? Vuoi navigare verso un'altra pagina.aspx costruita appositamente per la modifica dell'impegno. In questo caso potresti aggiungere una colonna HyperLinkField alla tua GridView per creare un link "Modifica" che conduca a tale pagina.aspx.

Lo puoi vedere qui. Questo esempio presenta appunto una colonna che contiene un link per navigare alla pagina di dettaglio.
https://www.aspsnippets.com/Articles/HyperLinkField-HyperLink-in-ASPNet-GridView-Example.aspx

ciao,
Moreno

Enjoy learning and just keep making
85 messaggi dal 04 marzo 2012
Ciao Moreno,
ti ringrazio per la dritta, ho provato a seguire l'esempio ma ho una serie di problemi, inizio dal primo, mi si creano il doppio delle colonne mi sai dire il perché?
Es. io disegno 33 colonne nella pagina in ASP:

<asp:GridView ID="dgvCalendarioMese" runat="server"
EnableSortingAndPagingCallbacks="True" >
<Columns>
<asp:BoundField DataField="Codice" HeaderText="Codice" ItemStyle-Width = "150" />
<asp:BoundField DataField="Tecnico" HeaderText="Tecnico" ItemStyle-Width = "150" />
<asp:HyperLinkField DataTextField="1" DataNavigateUrlFields="1" DataNavigateUrlFormatString="~/PlanningGestione.aspx?Id={0}"
HeaderText="1" ItemStyle-Width = "25" />
<asp:HyperLinkField DataTextField="2" DataNavigateUrlFields="2" DataNavigateUrlFormatString="~/PlanningGestione.aspx?Id={0}"
HeaderText="2" ItemStyle-Width = "25" />
<asp:HyperLinkField DataTextField="3" DataNavigateUrlFields="3" DataNavigateUrlFormatString="~/PlanningGestione.aspx?Id={0}"
HeaderText="3" ItemStyle-Width = "25" />
ecc.

Riempio la table con 33 colonne con gli stessi nomi:
Es.
table = New DataTable

table.Columns.AddRange(New DataColumn(32) {New DataColumn("Codice"), New DataColumn("Tecnico"), New DataColumn("1"), New DataColumn("2"), New DataColumn("3"), _
New DataColumn("4"), New DataColumn("5"), New DataColumn("6"), New DataColumn("7"), New DataColumn("8"), New DataColumn("9"), New DataColumn("10"), _
New DataColumn("11"), New DataColumn("12"), New DataColumn("13"), New DataColumn("14"), New DataColumn("15"), New DataColumn("16"), New DataColumn("17"), _
New DataColumn("18"), New DataColumn("19"), New DataColumn("20"), New DataColumn("21"), New DataColumn("22"), New DataColumn("23"), New DataColumn("24"), _
New DataColumn("25"), New DataColumn("26"), New DataColumn("27"), New DataColumn("28"), New DataColumn("29"), New DataColumn("30"), New DataColumn("31")})


table.Rows.Add(reader("IDEMPLOY"), reader("ANSURNAM") & " " & reader("ANNAME"), Array(1).ToString, Array(2).ToString, Array(3).ToString, Array(4).ToString, Array(5).ToString, _
Array(6).ToString, Array(7).ToString, Array(8).ToString, Array(9).ToString, Array(10).ToString, Array(11).ToString, Array(12).ToString, Array(13).ToString, _
Array(14).ToString, Array(15).ToString, Array(16).ToString, Array(17).ToString, Array(18).ToString, Array(19).ToString, Array(20).ToString, Array(21).ToString, _
Array(22).ToString, Array(23).ToString, Array(24).ToString, Array(25).ToString, Array(26).ToString, Array(27).ToString, Array(28).ToString, Array(29).ToString, _
Array(30).ToString, Array(31).ToString)

Me.dgvCalendarioMese.DataSource = table
Me.dgvCalendarioMese.DataBind()
3.939 messaggi dal 28 gennaio 2003
aggiungi la proprietà AutoGenerateColumns="False" nel GridView
85 messaggi dal 04 marzo 2012
Hai ragione, mi era sfuggito, grazie mille.
Adesso posso proseguire con i test.
3.939 messaggi dal 28 gennaio 2003
Mi sbaglierò ma credo che forse hai scelto il controllo più "difficile".
Forse il ListView è più manegevole (sarà che lo conosco meglio!)

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.