Laden...
Avatar #avatar-2253.png
math55 myCSharp.de - Member
Entwickler Deutschland Dabei seit 15.03.2007 314 Beiträge
Benutzerbeschreibung

Forenbeiträge von math55 Ingesamt 314 Beiträge

04.02.2010 - 16:18 Uhr

Ja, alles schon gelesen, ich finde die Info aber nicht, die ich brauch ... jemand Ideen?

Danke!

01.02.2010 - 16:50 Uhr

Wohl war, der Code oben macht aber genau das. Jemand eine Idee, wie man es kürzer schreiben kann?

01.02.2010 - 11:22 Uhr

Habe es selber gefunden:

DateTime lastDay = firstDay.AddDays(-1);

Hab den Wald vor lauter Bäumen nicht gesehen.

01.02.2010 - 11:17 Uhr

Hallo sitze gerade an dem Problem, den letzten Tag der letzten X Monate zu finden. Meine Idee war es, den ersten Tag zu finden und davon dann einen Tag abzuziehen. Klappt aber nicht wirklich, weil statt dem 31.12.2009, der 30.12.2009 rauskommt. Seht Ihr den Fehler?


public static List<DateTime> GetLastDayOfPreviousMonths(int howManyMonthsBack)
{
	DateTime now = DateTime.Now;
	int month = now.Month;
	int year = now.Year;
	var firstDay = new DateTime();
	var dateList = new List<DateTime>();

	for (int i = 1; i <= howManyMonthsBack; i++)
	{
		firstDay = new DateTime(year, month, 1);
		DateTime lastDay = firstDay.AddDays(i*-1);
		dateList.Add(lastDay);
		month = firstDay.AddMonths(-1).Month;
		year = firstDay.AddMonths(-1).Year;
	}
	return dateList;
}

Danke 😃

25.01.2010 - 13:31 Uhr

Perfekt, ich übergebe jetzt nur das item und den booleschen Wert. Danke 😃

25.01.2010 - 12:04 Uhr

Also so?


private static void SetStatus(Type1 t1, Type2 t2, Type3 t3, bool enabled)
{
	//funktionalitaet hier bauen
        t1.enabled = enabled
        //...
}

private static void  SetSomething(DataGridCommandEventArgs e, bool  enabled)
{
     //...
    var t1= (SomeType)(e.Item.Cells[0].FindControl("Control"));
    var t2= (SomeType)(e.Item.Cells[1].FindControl("Control"));
    var t3= (SomeType)(e.Item.Cells[2].FindControl("Control"));
    //...
    
   SetStatus(t1, t2, t3, enabled);
}

private static void  SetSomething(DataGridItemEventArgs e, bool  enabled)
{
     //...
    var t1= (SomeType)(e.Item.Cells[0].FindControl("Control"));
    var t2= (SomeType)(e.Item.Cells[1].FindControl("Control"));
    var t3= (SomeType)(e.Item.Cells[2].FindControl("Control"));
    //...
    
   SetStatus(t1, t2, t3, enabled);
}

?

25.01.2010 - 11:37 Uhr

Könnte gehen, hatte noch eine andre Idee. Ich mache eine Methode, mit dem Parameter EventArgs e, anstelle der speziellen Typen. Allerdings gibts da woanders Probleme:


private static void SetSomething(EventArgs e, bool enabled)
{
	EventArgs eventType = null;
	if(e is DataGridCommandEventArgs)
		eventType = (DataGridCommandEventArgs)e;
		
	if (e is DataGridItemEventArgs)
		eventType = (DataGridItemEventArgs)e;
			
	var test= (SomeType)(eventType.Item.Cells[0].FindControl("Control")); // hier kennt er dann Item nicht		
}

Wie wäre das zu lösen?

25.01.2010 - 11:21 Uhr

Niemand eine Idee? In meinem event, mache ich Folgendes:


protected void DG_Values_EditCommand(object sender, DataGridCommandEventArgs e)
{
     DG_Values.EditItemIndex = e.Item.ItemIndex;
     BindGrid();
}

Sollte doch so funzen? Die BindGrid Methode funktioniert sonst bestens, liegt das noch an irgendwelchen Flags? EnableViewState vom Grid ist auf "True".

Ideen?

25.01.2010 - 10:51 Uhr

Hallo, ich habe 2 Methoden, die sind nur von den Parametern her unterschiedlich:


private static void SetSomething(DataGridCommandEventArgs e, bool enabled)
{
     //...
    var test= (SomeType)(e.Item.Cells[0].FindControl("Control"));
    //...
}


private static void SetSomething(DataGridItemEventArgs e, bool enabled)
{
     //...
    var test= (SomeType)(e.Item.Cells[0].FindControl("Control"));
    //...
}

Der einzigste Unterschied ist also der erste Parameter (DataGridCommandEventArgs oder DataGridItemEventArgs). Wie stellt man das elegenater an? Der Code innerhalb der Methode ist ja doppelt.

Danke 😃

22.01.2010 - 12:52 Uhr

Ja, habs geschafft 😃

22.01.2010 - 11:49 Uhr

Hallo,

ich habe in meinem Grid eine EditCommandColumn, wenn ich aber den EditButton drücke, verscheinden die Daten die in den zu editierenden Controls standen. Was muss ich machen, damit diese bleiben?


 <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="übernehmen" CancelText="abbrechen" EditText="bearbeiten">
<ItemStyle HorizontalAlign="Right"></ItemStyle>
</asp:EditCommandColumn>

Danke

20.01.2010 - 10:57 Uhr

Hallo, ich möchte Controls zu einer TemplateColumn hinzufügen. Ich dachte da an eine Textfeld und eine ComboBox. Irgendwie bekomme ich das nicht hin.

Das habe ich bis jetzt:


...
<Columns>
    <asp:TemplateColumn SortExpression="wert1" HeaderText="Text1">
		<HeaderStyle HorizontalAlign="Right"></HeaderStyle>
		<ItemStyle HorizontalAlign="Right"></ItemStyle>
		<ItemTemplate>
			<%# DataBinder.Eval(Container.DataItem, "wert1")%>
		</ItemTemplate>
	</asp:TemplateColumn>

	<asp:TemplateColumn SortExpression="wert2" HeaderText="Text2">
		<HeaderStyle HorizontalAlign="Right"></HeaderStyle>
		<ItemStyle HorizontalAlign="Right"></ItemStyle>
		<ItemTemplate>
			<%# DataBinder.Eval(Container.DataItem, "wert2")%>
		</ItemTemplate>
	</asp:TemplateColumn>
</Columns>
...

Die Werte werden auch dargestellt, allerdings möchte ich diese Werte eben in meinen Controls haben. Wie gehe ich da generell vor?

Danke 😃

07.01.2010 - 11:57 Uhr

Hallo, ist es denn nun besser var anstelle des eindeutigen Typs zu nutzen? Wo liegt der Vorteil in der Nutzung?

Danke 😃

30.12.2009 - 10:17 Uhr

Hallo, ich habe eine eher prinzipielle Frage. Habe auch schon gegoogelt, aber nicht wirklich was gefunden. Ich muss einen Parameter durch mehrere Aufrufe hinweg durchreichen. Die Methoden existieren bereits, auch in überladener Form. Wie kann ich jetzt am effektivsten den neuen Parameter hinzufügen, ohne alle bereits existierenden Aufrufe ändern zu müssen?

Eine Möglichkeit wäre, alle Methoden zu ändern, das will ich nicht, eine andere Idee wäre, eine weitere Überladung zu erstellen, die dann den neuen Parameter enthält. Was gäbe es noch so?

Danke 😃

28.12.2009 - 16:27 Uhr

Hallo, ich habe eine Dropdownliste mit einigen DateTimes drinnen. Die fülle ich so:


DateTime now = DateTime.Now;

//gibt jeweils den Ersten der letzten 3 Monate zurück
DD_Month.Items.Add(now.AddMonths(-2).ToString("MM/yyyy", CultureInfo.InvariantCulture));
DD_Month.Items.Add(now.AddMonths(-1).ToString("MM/yyyy", CultureInfo.InvariantCulture));
DD_Month.Items.Add(now.ToString("MM/yyyy", CultureInfo.InvariantCulture));

//genau heute
DD_Month.Items.Add(now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture));

Wie man unschwer erkennen kann, ist der letzte Eintrag vom Format her anders. Wenn ich jetzt an denere Stelle diesen Code habe:


string selDate = DD_Month.SelectedValue;
DateTime date = DateTime.ParseExact(selDate, "MM/yyyy", CultureInfo.InvariantCulture);

Damit komme ich natürlich nicht durch...wie könnte ichs anstellen, damit beides geht?

Danke 😃

21.12.2009 - 13:02 Uhr

Hallo, habe nen neuen Rechner mit einem 64Bit Prozessor. Wenn ich meine Anwendung kompilieren will (VS2008 Pro), kommt immer der Fehler:

**Warnung 1 Assemblygenerierung -- Die Assembly System.Data.SQLite.dll, auf die verwiesen wird, hat einen anderen Zielprozessor. **

Wie kann ich denn für meine gesamte Projektmappe einstellen, dass das Ziel 32Bit sein soll?

Grüße

10.12.2009 - 09:21 Uhr

Ja, aber dafür ist es ein weiterer string...?

10.12.2009 - 09:17 Uhr

Hi, mal eine kurze Frage. Was ist besser?


string myString = someString + " - " + someOtherString1;
string myString1 = someString + " - " + someOtherString2;

oder


string str = someString + " - ";
string myString = str + someOtherString1;
string myString1 = str + someOtherString2;

Danke 😃

07.12.2009 - 17:02 Uhr

So in der Art habe ich mir das vorgestellt. Was macht denn jetzt if(predicate(x)) genau?

Danke 😃

07.12.2009 - 15:56 Uhr

Das is klar, aber FindAll für eine Liste bekommt ja auch nen Delegaten übergeben, das wollte ich eben mal nachstellen.

Grüße

07.12.2009 - 15:42 Uhr

Hallo, ich plage mich gerade wieder mit Delegaten rum. Ich habe eine Liste:


List<string> myList = new List<string>();
myList.Add("eins");
myList.Add("zwei");
myList.Add("drei");
myList.Add("vier");
myList.Add("fuenf");
myList.Add("einerlei");

Diese Liste möchte ich durchsuchen und alle Treffer als string zurückgeben. Also habe ich mir eine Methode geschrieben:


public static string MatchesSomething(IList<string> list, string whatToMatch)
{
    string str = string.Empty;
    foreach (string s in list)
    {
	if (Regex.IsMatch(s, ".*" + whatToMatch + ".*"))
		str += (s + ", ");
    }
    return str;
}

Jetzt habe ich meine Erweiterungsmethode geschrieben, die mir eben alle Treffer zurück geben soll. Ähnlich der FindAll Methode für eine Liste.


public static string MyFindAll<T>(this IList<T> list, Predicate<T> predicate)
{
     ???
}

Allerdings weiss ich nun nicht weiter. Ich muss ja zuerst mein Delegat anlegen, damit ich es dann in die MyFindAll übergeben kann.


public delegate string MyDel(IList<string> list, string what);

Aber wie nun weiter?

Danke 😃

07.12.2009 - 14:01 Uhr

Hat sicher erledigt, lag an was anderem...mein Fehler

04.12.2009 - 11:06 Uhr

Hallo, ich habe folgende Properties in meiner Klasse:


public string Prop1
{
	get
	{
		if(Session["Prop1"] != null)
			return Session["Prop1"] as string;
		return null;
	}
	set
	{
		Session["Prop1"] = value;
	}
}

public string Prop1Temp
{
	get
	{
		if(Session["Prop1Temp"] != null)
			return Session["Prop1Temp"] as string;
		return null;
	}
	set
	{
		Session["Prop1Temp"] = value;
	}
}

An einer anderen Stelle im Code dieser Klasse mache ich das hier:


Prop1Temp = Prop1;
Prop1 = "1234";

Mein Problem ist nun, dass, wenn ich Prop1 setze, auch Prop1Temp gesetzt wird. Also nach der Zeile Prop1 = "1234"; ist auch Prop1Temp 1234. Wie geht das denn anders?

Danke

01.12.2009 - 09:04 Uhr

Leider nein, mein Problem ist, dass ich ja keinen wirklichen Button habe, an den ich ein onclick hängen kann. Wie bekomme ich den denn raus?

Danke

30.11.2009 - 16:40 Uhr

Hallo, habe folgenden Code:


<Columns>
	<asp:ButtonColumn Text="löschen" CommandName="Delete">
	 </asp:ButtonColumn>
</Columns>

in einem DataGrid. Jetzt möchte ich vor dem Löschen eine JavaScript Abfrage einfügen, welche abfragt, ob wirklich gelöscht werden soll. In meiner Codebehind Datei habe ich eine ItemCommand Methode, welche dann den Löschbefehl mittels DataGridCommandEventArgs.CommandName filtert. Das funktioniert alles, was fehlt ist die JavaScript Abfrage. Wie baue ich die noch ein?

Danke

20.11.2009 - 14:03 Uhr

Hallo, vielen Dank, habe ausversehen an meinen anderen Post erneut die gleiche Frage gestellt, sorry.

Danke

20.11.2009 - 13:41 Uhr

[EDIT=herbivore]Abgeteilt von Regexfrage mit Groups[EDIT]

Jetzt nochmal etwas anders. Wie würde ich denn alle ganzen Wörter suchen, die mit einem @ beginnen?

\b@[\w]+\b

bringt mir keine Treffer...

Danke

20.11.2009 - 09:35 Uhr

Komisch, so hatte ichs auch schon, da gings nicht...na ja, so gehts, vielen Dank 😃.

Alles erledigt!

20.11.2009 - 09:27 Uhr

Ja, so passt das, danke 😃. Jetzt noch eine Frage:

Wie kann ich (@(pay)?date(from|to))|(@year) noch kürzer schreiben?

Danke

20.11.2009 - 08:55 Uhr

Hallo, ich habe einen langen string, in welchem diese Werte verstreut sind:

@dateto
@datefrom
@paydateto
@paydatefrom
@year

Nun möchte ich alle Treffer aus dem string in eine Liste packen. Ich habe noch Probleme beim finden der Gruppen:


Regex oRegex = new Regex(@"(@(pay)?date(from|to))", RegexOptions.IgnoreCase);
MatchCollection myMatchCollection = oRegex.Matches(strText);
foreach (Match myMatch in myMatchCollection)
{
	foreach (Group myGroup in myMatch.Groups)
		foreach (Capture myCapture in myGroup.Captures)
			Console.WriteLine("myCapture.Value = " + myCapture.Value);
}

Das funzt im Grunde, aber ich bekomme halt auch z.B. "to" als Treffer angezeigt, was ich ja nicht will. Mir ist klar, dass es daran liegt, dass ich "(from|to)" schreibe, aber wie ginge es denn anders?

Danke 😃

12.11.2009 - 09:35 Uhr

Hallo,

habe folgernden Code in meiner aspx Seite:


<asp:HyperLink ID="HL_Manual" NavigateUrl='<%# Path.Combine(ConfigurationManager.AppSettings["basepath"], ConfigurationManager.AppSettings["manualpath"]) %>' target="_blank" runat="server" >manual</asp:HyperLink>

Der Link dazu wird zwar angezeigt, lässt sich aber nicht anklichen...was mache ich falsch?

Danke

11.11.2009 - 10:04 Uhr

Hallo, ich hatte bis jetzt diesen Code:


DG_Test.DataSource = MyService.Get();
DG_Test.DataBind();

Jetzt möchte ich die Daten der Get() Methode nicht mehr in einem Grid darstellen, sondern in einder DropDownList. Jetzt habe ich diesen Code:


DDL_Test.DataSource = MyService.Get();
DDL_Test.DataBind();

Das funktioniert, aber ich bekomme halt nicht den Text in der DropDownList angezeigt. Wie würde ich den denn setzen? Ich habe DataTextField gefunden, aber wie mit einem Array?

Danke 😃

05.11.2009 - 13:33 Uhr

Hallo,

ich habe eine Methode in einer anderen Klasse, welche Dateien löscht.


// Global.asax.cs
if (HttpContext.Current != null)
{
     	string tempPath = HttpContext.Current.Request.PhysicalApplicationPath;
        DirectoryCleanUp.CleanUpDirectory(tempPath);
}

Das ganze rufe ich aus dem Application_Start event aus auf. Wenn ich das jetzt im VS 2008 ausführe, klappt es, hoste ich aber die App im IIS, bekomme ich

**
Der Zugriff auf den Pfad "..." wurde verweigert.**

Wieso?

05.11.2009 - 12:01 Uhr

Passt, danke 😃

Danke 😃

05.11.2009 - 11:46 Uhr

Jep, passt. Gibt es eine andere Möglichkeit, als diese?


string contents = File.ReadAllText(path, Encoding.Default);
File.WriteAllText(path, contents, Encoding.Unicode);

Danke

05.11.2009 - 11:22 Uhr

Hallo, wie kann ich denn für einen StreamWriter das Encoding auf UCS-2 Little Endian setzen? In System.Text habe ich nicht das passende Encoding gefunden.

Danke 😃

03.11.2009 - 10:17 Uhr

Wie würden denn die interfaces dann aussehen? Sehe ich das richtig, dass ich dann ein interface IDirectory habe, welches dann eine Exists Methode hat, die dann wiederum die "echte" Directory.Exists Methode aufruft?


class Directory : IDirectory
    {
        public bool Exists(string path)
        {
            return System.IO.Directory.Exists(path);
        }
    }

Danke

03.11.2009 - 09:39 Uhr

Hallo, ich habe eine Methode, die Dateien in einem Verzeichnis löscht.


private static void CleanUp(string folderToClean, DateTime lastTime)
{
    if (Directory.Exists(folderToClean))
    {
           string[] filesInFolder = Directory.GetFiles(folderToClean);
           FileInfo fileInfo;
           foreach (string file in filesInFolder)
           {
                fileInfo = new FileInfo(file);
                if (fileInfo.LastWriteTime.Date < lastTime.Date)
                     fileInfo.Delete();
            }
        }
}

Wie würde ich eine solche Datei wohl testen?

Danke 😃

02.11.2009 - 11:54 Uhr

Ich habe es jetzt gelöst. Ich habe die Spalte in ein DateTime konvertiert und mit DESC sortiert. Letztes Problem: Jetzt zeigt er mir natürlich die Zeit so an: 17.09.2009 00:00:00. Wie bekomme ich die 00:00:00 noch weg?

Danke 😃

02.11.2009 - 11:38 Uhr

Ich habe jetzt was erreicht. Ich habe jetzt diesen Code und er sortiert auch:


DataTable dt = method(param);
dt.DefaultView.Sort = "VersionDate";
rptVersions.DataSource = dt;
rptVersions.DataBind();

Das funzt jetzt sogar, da das Datum aber ein string ist, prüft er nur die ersten Zahlen, heisst also der 22.08.2009 liegt vor dem 10.10.2009. Wie könnte ich das noch ändern, ohne den Spaltentyp in ein DateTime abzuändern?

Danke!!

02.11.2009 - 11:21 Uhr

Kam auch schon auf die Idee, funzt aber ebenso nicht wirklich:


dt.DefaultView.Sort = "SubversionNumber, SubversionDate";

Ändert sich nix in der Anzeige, weder mit ASC noch mit DESC...sollte aber so funzen, richtig? Kann es daran liegen, dass er Datumsangaben der Art 30.12.2009 bzw. Nummernangaben der Art 2.34.6 nicht richtig sortieren kann?

Grüße

02.11.2009 - 10:38 Uhr

Hallo,

ich habe eine Repeater in meiner aspx Seite, der sieht so aus:


<asp:Repeater ID="rptVersions" OnItemDataBound="rptVersions_ItemDataBound" 
                                runat="server">
....
</asp:Repeater>

In der Codebehind gebe ich dann die Datenquelle folgendermaßen an:


rptVersions.DataSource = methode(param);

Wie kann ich jetzt die Sortierung hinzufügen? Ich habe es schon so versucht, klappt aber nicht, er kommt an der Stelle nicht lang.


protected void rptVersions_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.Arguments.SortExpression = "versionnumber";
}

Habe ich was vergessen?

Danke

29.10.2009 - 16:39 Uhr

Hallo ist es irgendwie möglich, ein Objekt automatisch zu erstellen? Normalerweise so:


MyObj mo = new MyObj();
mo.id = 12;
mo.name = "name";
//u.s.w.

Kann man das auch automatisieren über die IDE oder ein PlugIn? Am Ende soll dann ein Objekt rauskommen, was komplett befüllt ist.

Danke 😃

29.10.2009 - 16:04 Uhr

Hallo, ich habe dieses Property in einer Klasse:


//Controller.cs
//State.cs ist aus Microsoft.ApplicationBlocks.UIProcess
public Amount Amount
{
    get{return State["Amount"] as Amount;}
    set{State["Amount"] = value;}
}

Das möchte ich nun aus einer Testklasse raus testen. Die Frage ist nun natürlich wie genau. Wenn ich sowas hier mache,


//ControllerTest.cs
[Test]
public void AmountTest()
{
    Amount nullAmount = controller.Amount;
    Assert.IsNull(nullAmount); //true
}

dann geht das zwar, ist ja aber nur die halbe Miete. Wie stelle ich es also an, zu gucken, ob auch was != null zurück kommt?


Mock<???> amountMock = new Mock<???>();

Danke 😃

28.10.2009 - 09:05 Uhr

Hallo, ich nutze VS 2008 Professional und habe ein Problem mit den *.designer.cs Dateien. Da ich eine deutsche Version vom VS habe, schreibt er mir auch immer deutsche Kommentare rein. Da ich aber in einem mehrsprachigen Team arbeite, wäre es gut, wenn diese Kommentare auf englisch wären. Kann man das irgendwo einstellen?

Danke 😃

23.10.2009 - 11:04 Uhr

Hallo, ich habe eine normale aspx Seite und füge eine SqlDataSource hinzu. Dann klicke ich auf "Datenquelle konfigurieren", wähle meine lokale SQL Server 2008 Express Installation aus und die darauf befindliche DB. Wenn ich jetzt auf "Testverbindung" klicke, klappt die Verbindung. Will ich die Quelle aber per "Ok" hinzufügen, kommt die Meldung "Objektverweis nicht auf Objektinstanz festgelegt".

Was kann man denn da falsch machen, oder ist das ein Bug im VS 2008?

Danke! 😃

09.10.2009 - 12:33 Uhr

Das "test" wird aber nicht ausgegeben und es kommt eben ein Fehlerfesnter vom OS. Wenn ich die Anwendung als Konsolenanwendung übersetze, dann geht sie ja nicht mehr als Desktopanwendung im Falle args.length = 0, oder?

Grüße

09.10.2009 - 11:28 Uhr

Hallo, ich habe eine Desktopanwendung mit GUI und allem drum und dran. Der Code sieht so aus:


[STAThread]
static void Main(string[] args)
{
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new TestForm());
}

Jetzt möchte ich im Falle das args.length > 0 ist, eben keine GUI anzeigen, sondern die Übergabeparameter verwenden. Sieht so aus:


if (args.Length > 0)
{
     Console.WriteLine("test");
}
else
{
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new TestForm());
}

Das funktioniert aber nicht, ich bekomme immer den Fehler, dass die Anwendung geschlossen wurde. Kann man das so nicht machen?

Grüße 😃

23.09.2009 - 11:09 Uhr

Danke, hatte es auch gerade gefunden, diesmal mit ner deutschen google Suche.

😃