Forum: ASP.NET2.0 |
Thema:
AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: Belegt Status anzeigen ! |
Von:
Thomas Hauser (
15.08.2007 02:46) |
Hallo Thomas,
das ist recht einfach. Du hast das falsch ausgebessert. ;-)
Aber ein Fehler war trotzdem noch drin.
Im Page_Load Ereignis dürfen die Initialwerte der Filtersteuerelemente nicht im PostBack-Fall gesetzt werden, sonst sind alle hübschen Datumsselektionen wieder weg. ;-)
Also so:
protected void Page_Load(object sender, EventArgs e)
{
//Aktuelle Woche:
if (!Page.IsPostBack)
{
int day = (int)DateTime.Now.DayOfWeek;
Calendar1.SelectedDate = DateTime.Now.AddDays(-1 * (day - 1));
Calendar2.SelectedDate = DateTime.Now.AddDays(7 - day);
}
GridView1.DataBound += new EventHandler(GridView1_DataBound);
}
Bezüglich der Generierung der Tabelle. In meinem zuletzt geposteten Beispiel generiere ich nur für die Tage Spalten, für die auch mindestens ein Raum reserviert wurde. Wenn alle nicht reservierten trotzdem angezeigt werden sollen, dann mach eine kleine Änderung (Im Übrigen sind dann die Spalten auch sortiert):
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// Zusammenfassungsbeschreibung für Ressourcen
/// </summary>
public class Ressourcen
{
private DateTime begin;
public DateTime Begin
{
get { return begin; }
set { begin = value; }
}
private DateTime end;
public DateTime End
{
get { return end; }
set { end = value; }
}
public Ressourcen()
{
int day = (int)DateTime.Now.DayOfWeek;
this.Begin = DateTime.Now.AddDays(-1 * (day - 1));
this.End = DateTime.Now.AddDays(7 - day);
}
public Ressourcen(DateTime Begin, DateTime End)
{
this.Begin = Begin;
this.End = End;
}
public DataTable GetDataTable(DateTime Begin, DateTime End)
{
this.Begin = Begin;
this.End = End;
return GetDataTable();
}
public DataTable GetDataTable()
{
DataTable belegungen = new DataTable("Belegungen");
using (SqlConnection con = new SqlConnection())
{
con.ConnectionString = ConfigurationManager.ConnectionStrings["myConString"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from Belegung where Startdatum between @Start and @End or Stopdatum between @Start and @End";
cmd.Parameters.AddWithValue("@Start", Begin);
cmd.Parameters.AddWithValue("@End", End);
DataTable data = new DataTable("Daten");
data.Load(cmd.ExecuteReader());
con.Close();
belegungen.Columns.Add("Raum", typeof(string));
TimeSpan span = (TimeSpan)(End - Begin);
for (int day = 0; day <= span.TotalDays; day++)
{
string colname = Begin.AddDays(day).ToShortDateString();
belegungen.Columns.Add(colname, typeof(string));
}
foreach (DataRow row in data.Rows)
{
DateTime start = (DateTime)row["Startdatum"];
DateTime end = (DateTime)row["Stopdatum"];
TimeSpan spanRow = (TimeSpan)(end - start);
DataRow resRow;
resRow = SearchRessource(row["RessourcenId"], belegungen);
if (resRow == null)
{
resRow = belegungen.NewRow();
belegungen.Rows.Add(resRow);
}
resRow["Raum"] = string.Format("Raum {0}", row["RessourcenId"].ToString());
for (int day = 0; day <= spanRow.TotalDays; day++)
{
string colname = start.AddDays(day).ToShortDateString();
resRow[colname] = "belegt";
}
}
}
return belegungen;
}
private DataRow SearchRessource(object Ressource, DataTable belegungen)
{
foreach (DataRow row in belegungen.Rows)
{
if (row["Raum"].ToString() == string.Format("Raum {0}", Ressource.ToString()))
{
return row;
}
}
return null;
}
}
So, jetzt müsste das aber passen.
Viel Spaß,
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 |
|
|
Thomas
Scherner
|
15.08.2007 08:35 |
|
|
Thomas
Hauser
|
15.08.2007 17:13 |
|
|
Thomas
Scherner
|
15.08.2007 15:07 |
|
|
Thomas
Hauser
|
15.08.2007 17:15 |
|
|
AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW:...
Hallo Thomas ,<br>habe genau dein letzte Klasse genommen und da ist es aufgetreten.<br>Muste auch Clss Ressourcen in Resource ändern da er da genörgelt hatte.<br><br>Ich probiere es gleich aus..<br><br>Vielen... |
|
|
|
|
|
Thomas
Scherner
|
15.08.2007 17:19 |
|
|
AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: AW:...
Hallo Thomas,<br><br>das mit dem Namen der Klasse liegt einfach daran, dass ich beide im Projekt habe und die mit gleichem Namen, würde wohl zu nem Problem führen. ;-)<br><br>Wegen dem belegt/frei:<br>In meinem... |
|
|
|
|
|
Thomas
Hauser
|
15.08.2007 18:47 |
|
|
AW: Belegt Status anzeigen !
Hallo Thomas,<br>ich habe jetzt alles versucht zu Übernehmen und jetzt läuft gar nichts mehr :-((so dumm wie ich war kein Backup gemacht..Diesen Code hier nimmt er nicht und nörgelt am String rum..<br>if... |
|
|
|
|
|
Thomas
Scherner
|
15.08.2007 21:18 |
|
|
AW: AW: Belegt Status anzeigen !
Sorry noch ein Zusatz , weil ich nicht nachgedacht habe.<br>Ich kann ja die ID auf die Ressourcen ( die brauche ich ja zum Buchen ) nehmen und das select dann auf LeftJoin aufbauen. Dann werden immer... |
|
|
|
|
|
Thomas
Scherner
|
15.08.2007 22:05 |
|
|
AW: AW: Belegt Status anzeigen !
Hallo Thomas,<br><br>sorry, das war wohl meine Schuld. Bin in der Zeile verrutscht.<br>Der Inhalt der Spalte soll nur dann angelegt werden, wenn die Spalte existiert. Also erst den Spaltennamen berechnen,... |
|
|
|
|
|
Thomas
Hauser
|
15.08.2007 22:08 |
|
|
AW: AW: AW: Belegt Status anzeigen !
Hallo Thomas ,<br>deine Schuld never. Ich kann halt alleine zu wenig.<br>Es läuft alles wieder nur Belegt und frei zeigt er nicht an. Das heist Belegt ist weiss mit schrift belegt und frei wird mit der... |
|
|
|
|
|
Thomas
Scherner
|
15.08.2007 23:22 |
|
|
AW: AW: AW: AW: Belegt Status...
Es wird in jede Zelle beim ersten Durchlauf belegt reingeschrieben.<br>Deswegen geht er im Behind nicht mehr und setzt sie frei.<br>Da ist glaube ich ein Denkdreher drin ...<br><br>Gruß<br>Thomas |
|
|
|
|
|
Thomas
Scherner
|
15.08.2007 23:36 |
|
|
AW: AW: AW: AW: AW: Belegt...
Irgendwo musst Du was beim Kopieren des Codes vergessen haben. Hier nochmals der ganze Code. Sorry, aber bei mir funscht das!<br><br>ASPX:<br><%@ Page Language="C#" AutoEventWireup="true" ... |
|
|
|
|
|
Thomas
Hauser
|
15.08.2007 23:46 |
|
|
FERTIG !!
Hallo Thomas !<br>FINALE juhuuu alles stimmt .<br>Alles ist schnell und klasse. Es braucht nichts mehr geändert werden.<br><br>Super vielen Dank für alles.<br>Ich werde wenn ich darf die in deinem Blog anmailen... |
|
|
|
|
|
Thomas
Scherner
|
15.08.2007 23:48 |
|
|
AW: FERTIG !!
Hallo Thomas,<br><br>Natürlich kann und darf jeder mir über meinen Blog Nachrichten schreiben. Aber es ist im Sinne des Community-Gedanken, dass die Fragen im Forum gestellt werden und die Informationen... |
|
|
|
|
|
Thomas
Hauser
|
16.08.2007 00:37 |
|
|
AW: AW: FERTIG !!
Hallo Thomas,<br>so war das auch nicht gemeint. Wollte nur nicht so das Forum zu texten.<br>Ich habe noch 2 Fragen bitte.<br>Ich habe das Datum umformatiert und zwar so:<br>string colname =... |
|
|
|
|
|
Thomas
Scherner
|
16.08.2007 14:19 |
|
|
AW: AW: AW: FERTIG !!
Hallo Thomas,<br><br>kein Problem.<br>Das Umformatierung des Datums ist kein Problem, solange Du das an beiden Stellen machst.<br>Zeile 95: string colname = Begin.AddDays(day).ToString("dd.MM.yy");<br>Zeile... |
|
|
|
|
|
Thomas
Hauser
|
16.08.2007 15:05 |
|
|
AW: AW: AW: AW:...
Hallo Thomas,<br>es hat alles so geklappt. Vielen Dank.<br>Das Statement ist auch so vollkommen ok habe die Möglichkeit 1 genommen.<br>Jetzt wollte ich sowas wie eine schnellbelegung bauen direkt aus der... |
|
|
|
|
|
Thomas
Scherner
|
19.08.2007 13:19 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!