Ja, alles schon gelesen, ich finde die Info aber nicht, die ich brauch ... jemand Ideen?
Danke!
Wohl war, der Code oben macht aber genau das. Jemand eine Idee, wie man es kürzer schreiben kann?
Habe es selber gefunden:
DateTime lastDay = firstDay.AddDays(-1);
Hab den Wald vor lauter Bäumen nicht gesehen.
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 😃
Perfekt, ich übergebe jetzt nur das item und den booleschen Wert. Danke 😃
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);
}
?
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?
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?
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 😃
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
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 😃
Hallo, ist es denn nun besser var anstelle des eindeutigen Typs zu nutzen? Wo liegt der Vorteil in der Nutzung?
Danke 😃
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 😃
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 😃
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
Ja, aber dafür ist es ein weiterer string...?
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 😃
So in der Art habe ich mir das vorgestellt. Was macht denn jetzt if(predicate(x)) genau?
Danke 😃
Das is klar, aber FindAll für eine Liste bekommt ja auch nen Delegaten übergeben, das wollte ich eben mal nachstellen.
Grüße
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 😃
Hat sicher erledigt, lag an was anderem...mein Fehler
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
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
Niemand eine Idee?
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
Hallo, vielen Dank, habe ausversehen an meinen anderen Post erneut die gleiche Frage gestellt, sorry.
Danke
[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
Komisch, so hatte ichs auch schon, da gings nicht...na ja, so gehts, vielen Dank 😃.
Alles erledigt!
Ja, so passt das, danke 😃. Jetzt noch eine Frage:
Wie kann ich (@(pay)?date(from|to))|(@year) noch kürzer schreiben?
Danke
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 😃
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
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 😃
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?
Jep, passt. Gibt es eine andere Möglichkeit, als diese?
string contents = File.ReadAllText(path, Encoding.Default);
File.WriteAllText(path, contents, Encoding.Unicode);
Danke
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 😃
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
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 😃
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 😃
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!!
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
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
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 😃
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 😃
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 😃
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! 😃
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
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 😃
Danke, hatte es auch gerade gefunden, diesmal mit ner deutschen google Suche.
😃