DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET2.0 | Thema: Belegt Status anzeigen ! | Von: Thomas Hauser ( 19.08.2007 20:59)

Hallo Thomas,

kein Grund nervös zu werden.

Immer locker. ;-)

Aber Du hast Recht, der Code hätte schöner sein können von Reflector.


ASPX-Datei
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" EnableViewState="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Frei-/Belegtinformationen</title>
<style type="text/css">
div {
float: none;
}

div.filterField {
float: left;
}

.Grid {
width: 100%;
}

.RessourceFree {
background-color: Green;
}

.RessourceNotFree {
background-color: Red;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
 <div class="filterField">
<asp:Label ID="BeginLabel" runat="server" Text="Startdatum" AssociatedControlID="Calendar1"/>
<asp:calendar ID="Calendar1" runat="server"></asp:calendar>
</div>
<div class="filterField">
<asp:Label ID="EndLabel" runat="server" Text="Enddatum" AssociatedControlID="Calendar2"/>
<asp:calendar ID="Calendar2" runat="server"></asp:calendar>
</div>
</div>
<div>
<asp:GridView ID="GridView1" runat="server" CssClass="Grid" DataSourceID="ObjectDataSource1"></asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetDataTable"
TypeName="Ressourcen">
<SelectParameters>
<asp:ControlParameter ControlID="Calendar1" DefaultValue="DateTime.Now" Name="BeginDate"
PropertyName="SelectedDate" Type="DateTime" />
<asp:ControlParameter ControlID="Calendar2" DefaultValue="DateTime.Now" Name="EndDate"
PropertyName="SelectedDate" Type="DateTime" />
</SelectParameters>
</asp:ObjectDataSource>
</div>
</form>
</body>
</html>


CODE-BEGIND

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Aktuelle Woche:
If Not Page.IsPostBack Then
Dim day As Integer = CType(DateTime.Now.DayOfWeek, Integer)
Calendar1.SelectedDate = DateTime.Now.AddDays(-1 * (day - 1))
Calendar2.SelectedDate = DateTime.Now.AddDays(7 - day)

End If
AddHandler GridView1.DataBound, AddressOf GridView1_DataBound
End Sub

Private Sub GridView1_DataBound(ByVal sender As Object, ByVal e As EventArgs)
For Each gridrow As GridViewRow In GridView1.Rows
For Each cell As TableCell In gridrow.Cells
If cell.Text = "belegt" Then
cell.CssClass = "RessourceNotFree"
Else
If cell.Text = " " Then
cell.CssClass = "RessourceFree"
cell.Text = "frei"
End If
End If
Next

Next

End Sub

End Class

RESSOURCEN-Klasse:

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient

Public Class Ressourcen

' Fields
Private _BeginDate As DateTime
Private _EndDate As DateTime

' Properties
Public Property BeginDate() As DateTime
Get
Return Me._BeginDate
End Get
Set(ByVal value As DateTime)
Me._BeginDate = value
End Set
End Property

Public Property EndDate() As DateTime
Get
Return Me._EndDate
End Get
Set(ByVal value As DateTime)
Me._EndDate = value
End Set
End Property

' Methods
Public Sub New()
Dim dayOfWeek As Integer = CType(DateTime.Now.DayOfWeek, Integer)
Me._BeginDate = DateTime.Now.AddDays(CType(-1 * (dayOfWeek - 1), Integer))
Me._EndDate = DateTime.Now.AddDays(CType(7 - dayOfWeek, Integer))
End Sub

Public Sub New(ByVal BeginDate As DateTime, ByVal EndDate As DateTime)
Me.BeginDate = BeginDate
Me.EndDate = EndDate
End Sub

Public Function GetDataTable() As DataTable
Dim belegungen As New DataTable("Belegungen")
Using connection As SqlConnection = New SqlConnection()
connection.ConnectionString = ConfigurationManager.ConnectionStrings("myConString").ConnectionString
connection.Open()
Dim command As New SqlCommand
command.Connection = connection
command.CommandText = "select " _
& " RessourcenId, Startdatum, Stopdatum " _
& " from " _
& " belegung " _
& " where " _
& " Startdatum between @Start and @End " _
& " or Stopdatum between @Start and @End " _
& " union " _
& " select " _
& " distinct RessourcenId, null, null " _
& " from " _
& " belegung " _
& " where " _
& " not(Startdatum between @Start and @End " _
& " or Stopdatum between @Start and @End)"
command.Parameters.AddWithValue("@Start", Me.BeginDate)
command.Parameters.AddWithValue("@End", Me.EndDate)
Dim table2 As New DataTable("Daten")
table2.Load(command.ExecuteReader)
connection.Close()
belegungen.Columns.Add("Raum", GetType(String))
Dim span As TimeSpan = CType((Me.EndDate - Me.BeginDate), TimeSpan)
Dim i As Integer = 0
Do While (i <= span.TotalDays)
Dim columnName As String = Me.BeginDate.AddDays(i).ToString("dd.MM.yy")
belegungen.Columns.Add(columnName, GetType(String))
i += 1
Loop
Dim row As DataRow
For Each row In table2.Rows
Dim minValue As DateTime = DateTime.MinValue
Dim time2 As DateTime = DateTime.MinValue
If (Not row.Item("Startdatum") Is DBNull.Value) Then
minValue = CDate(row.Item("Startdatum"))
End If
If (Not row.Item("Stopdatum") Is DBNull.Value) Then
time2 = CDate(row.Item("Stopdatum"))
End If
Dim span2 As TimeSpan = DirectCast((time2 - minValue), TimeSpan)
Dim row2 As DataRow = Me.SearchRessource(row.Item("RessourcenId"), belegungen)
If (row2 Is Nothing) Then
row2 = belegungen.NewRow
belegungen.Rows.Add(row2)
End If
row2.Item("Raum") = String.Format(" {0}", row.Item("RessourcenId").ToString)
Dim j As Integer = 0
Do While (j <= span2.TotalDays)
Dim name As String = minValue.AddDays(j).ToString("dd.MM.yy")
If belegungen.Columns.Contains(name) Then
row2.Item(name) = "belegt"
End If
j += 1
Loop
Next
Return belegungen
End Using
End Function

Public Function GetDataTable(ByVal BeginDate As DateTime, ByVal EndDate As DateTime) As DataTable
Me.BeginDate = BeginDate
Me.EndDate = EndDate
Return Me.GetDataTable()
End Function

Private Function SearchRessource(ByVal Ressource As Object, ByVal belegungen As DataTable) As DataRow
Dim row As DataRow
For Each row In belegungen.Rows
If (row.Item("Raum").ToString = String.Format("Raum {0}", Ressource.ToString)) Then
Return row
End If
Next
Return Nothing
End Function
End Class


Hoffe, die Welt ist jetzt endgültig in Ordnung. ;-)

Grüße,

Thomas

Thomas Hauser (Trainer und Consultant, Blog: http://thomashauser.spaces.live.com, Forum: http://www.sharepointbook.de - Die Forum-Webseite zum Buch!)

Betreff Von Datum
AW: Belegt Status anzeigen !
Super vielen vielen Dank..<br>Ich muss vor lauter stolz sagen .. Ein wenig hatte ich den Code auch schon so ähnlich :-)<br><br>Danke für deine ganze Mühe, jetzt kann ich in VB weitermachen und auch Ajax...
Thomas Scherner 19.08.2007 21:33
AW: AW: Belegt Status anzeigen !
Hallo Thomas,<br>sorry noch ne Frage. Ich wollte den Startbuchungstag und den Endbuchungstag Orange färben. Hatte mir gedacht das mache ich über den Text Anreise also ungefähr so:<br>Do While (j <=...
Thomas Scherner 20.08.2007 00:47
AW: AW: AW: Belegt Status anzeigen !
Hallo Thomas,<br><br>spiel doch mal Framework. ;-)<br>Wandere durch den Code und überleg Dir was passiert.<br>Das kann so net gehen.<br>Tipp: Du hast nur die Schleifen verdoppelt. Wozu? Nur der Inhalt ist...
Thomas Hauser 21.08.2007 16:40
AW: AW: AW: AW: Belegt Status anzeigen !
Hallo Thomas,<br>sorry konnte nicht debuggen da ich probleme mit dem Connect zum SQL hatte.<br>Es klappt so nicht. Ich bekomme einen fehler z.b. Wenn ich 13.08 als Start im Calender auswähle und 14.08...
Thomas Scherner 21.08.2007 22:05
AW: AW: AW: AW: AW: Belegt Status anzeigen...
Hallo Thomas,<br>ich glaube ich habe einen Logik Fehler... Wenn der Name immer einem Datum ist und ich nur einen Datensatz vergleiche kann anabreise nicht gehen, da beide kriterien nicht gleichzeitig...
Thomas Scherner 21.08.2007 22:54
Belegt Status anzeigen !
Hallo Thomas,<br><br>es gibt ein Startdatum und ein Stopdatum. Beide können bei einer 1-Tages-Buchung gleich dem Spaltennamen sein.<br><br>Grüße,<br><br>Thomas
Thomas Hauser 21.08.2007 23:33
AW: AW: AW: AW: AW: Belegt Status anzeigen...
Hallo Thomas,<br><br>1. Wenn Du nicht debuggen kannst, dann warte bitte, bis es wieder geht.<br><br>2. Der Codeausschnitt von mir ist korrekt, bis auf das zweimal Stopdatum. Da ist beim Kopieren was schief...
Thomas Hauser 21.08.2007 23:32
AW: AW: AW: AW: AW: AW: Belegt Status...
Hallo Thomas,<br>du wirst mich jetzt sicher auslachen. Ich habe seit 2 Wochen debugt und schaffe es nicht es fertig zu bekommen. Es kann sein das eine Buchung am z.B. 01.10.07 aufhört und eine neue am...
Thomas Scherner 22.09.2007 01:43
AW: AW: AW: AW: AW: AW: AW: Belegt...
Hallo Thomas,<br><br>row("Anreise") würde bedeuten, dass Du in der aktuellen Zeile auf die Spalte "Anreise" zugreifst. Die wird aber nie existieren, weshalb der Teil innerhalb des IF-Blocks niemals...
Thomas Hauser 22.09.2007 11:21
AW: AW: AW: AW: AW: AW: AW: AW:...
Hallo Retter :-),<br>es ist leider so das ein Raum bis Mittags geräumt werden muss damit am GLEICHEN Tag noch eine Belegung stattfinden kann.Also heist es für mich umbauen :-( Ich muss also wirklich...
Thomas Scherner 22.09.2007 12:22
AW: AW: AW: AW: AW: AW: AW: AW:...
Hallo Thomas,<br><br>das kommt drauf an, was in der Datenbank steht. Wenn da die Anreise auch am gleichen Tag ist, musst Du natürlich row[name].ToString() = "Abreise" prüfen. Ist in der Datenbank aber der...
Thomas Hauser 22.09.2007 13:19
AW: AW: AW: AW: AW: AW: AW:...
Ich habe es jetzt so geschrieben,<br>doch er läuft immer an der Anweisung vorbei... <br>Dim j As Integer = 0<br> <br> Do While (j <= span2.TotalDays)<br> Dim...
Thomas Scherner 22.09.2007 13:54
AW: AW: AW: AW: AW: AW:...
Hallo Thomas,<br><br>liest Du meine Posts? Ich hoffe ja!<br><br>Also, die Spalte "Anreise" existiert doch gar nicht. Was soll denn dabei herauskommen? Du hast sowas wie nen Raum und Du hast viele, viele...
Thomas Hauser 22.09.2007 14:21
AW: AW: AW: AW: AW:...
Tut mir leid Thomas,<br>ich bin nicht in der Lage es umzusetzen. Verstehe zu wenig davon.<br>OK die Row (anreise) gibt es nicht. Aber in meinem Kopf steht wenn da schon Anreise in der Celle steht also...
Thomas Scherner 22.09.2007 15:35
AW: AW: AW: AW: AW:...
Hi,<br><br>jetzt glaube ich habe ich es verstanden. Ich denke, Du hast einfach so die Spaltennamen im SQL geändert. Das hieß damals noch Startdatum und Stopdatum. Wie kannst Du mich nur so verwirren....
Thomas Hauser 22.09.2007 16:21
AW: AW: AW: AW:...
Sorry das ich den Kaiserschnitt der Geburt gefordert habe :-)<br>Er warf nochmal kurz einen Fehler die Spalte gehört nicht zur Tabelle Belegungen aber da habe ich :-))))) (habe auch ein wenig was...
Thomas Scherner 22.09.2007 16:41

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Visual Studio 1 Magazin

© Copyright 2003 ppedv AG