Nach längerem Suchen, habe ich jetzt eine Lösung für den Internet Explorer gefunden, welche ich euch nicht vorenthalten wollte!
Zuerst einmal müsst ihr die SHDocVw.DLL in euer Projekt als Referenz hinzufügen....die DLL findet ihr unter *C:\Windows\System32*
Nun müsst ihr in den Eigenschaften der hinzugefügten Referenz, die Eigenschaft Embed Interop Types auf false setzen. Wenn ihr das nicht machen solltet, bekommt Ihr einen Fehler angezeigt.
Mit folgender Methode, könnt ihr euch die aktuellen Links (auch aus mehreren Registern) aus dem Internet Explorer anzeigen lassen.
private void ShowUrls()
{
foreach (InternetExplorer ie in new ShellWindowsClass())
{
if (!ie.LocationURL.StartsWith("file"))
{
textBox1.Text += ie.LocationURL + Environment.NewLine;
}
}
}
In der Schleife, habe ich dann noch eine Abfrage eingebaut, denn falls ihr währenddessen auch ein oder mehrere Windows-Explorer-Fenster geöffnet haben solltet, werden euch auch davon die Pfade mit angezeigt, welche in diesem Fall mit file beginnen.
Vielleicht kann das ja hier noch jemand gebrauchen! 😁
MfG
Echo]6[
Hallo und danke für deine Antwort! Dann werde ich mal weiterschauen!
MfG
Echo]6[
Hallo!
Ich wollte euch mal fragen, ob es möglich ist aus einem geöffneten Internetbrowser (IE, Firefox usw.) alle URL's auszulesen, damit meine ich auch aus mehreren Registern (falls vorhanden), die geöffnet sind?
Wenn ja, wie könnte man das realisieren?
Vielen Dank schonmal im Voraus für eure Antworten!
MfG
Echo]6[
Hallo!
Ich möchte eine Datei zum Download anbieten, die in meinem Webprojekt liegt, was ich ja mit einem generischen Handler (.ashx) realisieren kann.
Hier mal ein wenig Pseudocode, damit ihr wisst was ich meine.
public class DocumentHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (datei.Exists())
{
context.Response.ContentType = contenttype;
context.Response.AddHeader("content-disposition", "attachment; filename=" +
context.Server.UrlEncode(filename) +
context.Server.UrlEncode(fileExt));
context.Response.AddHeader("content-length", dokument.Length.ToString());
context.Response.BinaryWrite(dokument);
context.Response.End();
}
else
{
return;
}
}
}
Meine Problem ist nun folgendes: Wenn ich eine Datei zum Download anbieten möchte, aber diese aus welchen Gründen auch immer nicht existiert, verschwindet meine Ursprungsseite und es wird eine komplett leere Seite angezeigt, mit der Adresse des Handlers.
Kann man den Handler evtl. so "abbrechen", dass wenn die Datei nicht existieren sollte, meine Ursprungsseite (von der ich dem Handler aufgerufen habe) beibehält und nicht auf die leere "Handlerseite" springt?
Vielen Dank schonmal im Voraus!
Gruß
Echo
Hallo!
Ich hätte da auch nochmal eine Frage: Wie kann man eigentlich die Methoden aus einer Klasse über den Webservice zu Verfügung stellen.
Ich habe eine Silverlight-Klassenbibliothek und aus dieser benutze ich eine Klasse in meinem Webservice. In der Klasse sind Eigenschaften, Methoden, sowie auch ein zweiter Konstruktor mit Parametern enthalten.
Möchte ich nun über den Webservice-Proxy in meiner Silverlight-Applikation eine neue Instanz dieser Klasse erstellen, kann ich nicht auf den zweiten Konstrukor und auch nicht auf die Methoden zugreifen, sondern nur auf die Eigenschaften.
Habt ihr da evtl. eine Idee?
MfG
Echo]6[
Hallo,
ich habe ein Projekt, indem ich ein Webprojekt, eine Silverlight Applikation und eine Silverlight Klassenbibliothek habe.
In der Klassenbibliothek habe ich eine Klasse, die ein paar Eigenschaften und Methoden enthält. Diese Klasse benutze ich nun in meinem Webprojekt, in einem Webservice (.asmx), da ich eine Instanz dieser Klasse als Parameter der Webmethod übergebe.
[WebMethod]
public void DoSomething(MeineKlasse _meineklasse)
{
}
Nun erstelle ich in meiner Silverlight Applikation einen Proxy des Webservice und rufe die Methode aus dem Webservice auf.....alles noch kein Problem.
Möchte ich aber nun in Silverlight eine neue Instanz meiner Klasse aus der Klassenbibliothek erstellen und greife auf sie durch den Serviceproxy zu, so kann ich über die Intellisense nur die Eigenschaften sehen und nicht die Methoden.
Erstelle ich nun eine Instanz der Klasse über die Klassenbibliothek, so sehe ich zwar nun alle Eigenschaften und Methoden, aber ich bekomme dann folgende Fehlermeldung:
"MeineKlasse" ist ein mehrdeutiger Verweis und kann "SilverlightTest.Serviceproxy.MeineKlasse" oder "Klassenbibliothek.MeineKlasse" sein.
Meine Fragen nun an euch:
Vielen Dank schonmal im Voraus!
Gruß
Echo
Hi!
Ich arbeite mit den Datenbankubhängigen Klassen, wie z.B. DbCommand und habe dazu nochmal eine Frage.
Wenn ich direkt mit den Sql-Klassen arbeite, sprich ich gebe sowas an:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = _Statement;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Spalte1", "Spalte1").Value = Mein byte-Array;
Das obige Beispiel klappt einwandfrei, wie realiesiere ich das für datenunabhängige Klasse?
Wenn ich "DbCommand" die "Parameters.Add"-Methode nehme, kann ich nur den Spaltennamen setzen und nicht auch den Parameternamen.
Mache ich da vielleicht etwas falsch?
MfG
Echo
verwendetes Datenbanksystem: SQL Server 2005
Schönen guten Tag,
ich versuche gerade eine Zeile aus einer DataTable per SQL-Statement in die Datenbank zu schreiben, doch es will leider noch nich so recht klappen.
Die Tabelle besteht aus drei Spalten:
"INSERT INTO tblDokumente (DokGuid, DokBezeichnung, DokDatei) VALUES ('" + Guid.NewGuid() + "', '" + dtDok["DokBezeichnung"] + "', '" + dtDok["DokDatei"] + "')";
Führe ich dieses Statement aus, so bekomme ich folgende Fehlermeldung:
"System.Data.SqlClient.SqlException: Die implizite Konvertierung vom varchar-Datentyp in varbinary(max) ist nicht zulässig. Verwenden Sie die CONVERT-Funktion, um diese Abfrage auszuführen."
Was müsste ich machen, damit ich so meine Datei in die Datenbank schreiben kann?
Vielen Dank schonmal im Voraus!
Gruß
Echo
Hallo Peter!
Danke für deinen Tipp! Ich werde mich mal ein wenig darüber schlau machen und meld mich dann evtl. nochmal! 😉
Gruß
Echo
Hallo Peter!
Ok, dann kann ich ja schonmal den Eintrag in der "web.config" wieder löschen!
Zu zweitem: Wie würdest du das denn regeln mit dem Anzeigen der Dokumente. Der Benutzer muss sich nämlich alle Dokumente die in der Tabelle vorhanden sind mindestens einmal anschauen, um auf die nächste Seite springen zu können? Deswegen ja auch das dynamische einschalten des Buttons
Gruß
Echo
Hallo Peter!
Danke für deine Antwort!
Ich habe mir mal jetzt einen Handler erstellt und schaue jetzt gerade, wie das so alles funktioniert.
HandlerCode:
<%@ WebHandler Language="C#" Class="DocumentHandler" %>
using System;
using System.Web;
public class DocumentHandler :IHttpHandler {
public void ProcessRequest (HttpContext) {
context.Response.ContentType = "text/plain";
context.Response.Write("Dies ist ein Test");
}
public bool IsReusable {
get {
return false;
}
}
}
In der web.config habe ich den Handler folgendermaßen hinzugefügt.
<add verb="*" path="DocumentHandler.ashx" validate="false" type="DocumentHandler" />
Setze ich den Wert von der Eigenschaft "validate" auf true, so bekomme ich beim Starten meiner Seite folgenden Fehler angezeigt:
"Parserfehlermeldung: Der Typ "DocumentHandler" konnte nicht geladen werden."
Was ich auch noch nicht ganz verstanden habe ist, wie ich nun über meinen Button "btnOpenDokument" diesen Handler nun ausführe. Habe bisher nur den Weg gefunden, dass ich auf ihn so zugreifen muss, als wenn ich auf eine neue Seite springen würde. Wobei ich ja auf meiner vorhandenen bleiben möchte und nur den Download-Dialog anzeigen und einen Button (unterm GridView) sichtbar machen möchte.
Gruß
Echo
Hallo!
Ich habe ein GridView, welches ich mit Daten aus einer Datenbank fülle. Zu jedem dieser Datensätze existiert ein Dokument (PDF, Word oder Excel). Nun habe ich eine zusätzliche Spalte erstellt, in der sich jeweils ein Button befindet, über dem ich dann das jeweilige Dokument öffnen möchte. Mein Ziel ist es nun, wenn man jedes Dokument einmal geöffnet hat, soll ein Button sichtbar werden, um auf die nächste Seite fortfahren zu können.
Hier habe ich mal mein etwas abgespeckten Code des Buttons meiner zusätzlichen Spalte, über den man das Dokument öffnen kann.
protected void btnOpenDokument_Click(object sender, EventArgs e)
{
btnNextPage.Visible = true;
Response.ContentType = "Application/pdf";
Response.AddHeader("content-disposition", "attachment");
string FilePath = @"C:\Users\Admin\Desktop\Test.pdf";
Response.WriteFile(FilePath);
Response.End();
}
Kommentiere ich den Part zum Dokument öffnen aus, so wird der Button (btnNextPage) sichtbar, aber führe ich ihn so aus, wie er oben zu sehen ist, so wird der Button nicht sichtbar. Ich hoffe, ihr könnt mir sagen, warum das so ist und was man evtl. ändern müsste!
Ich danke euch schonmal im Voraus für eure Tipps!
Gruß
Echo
Hi!
So, ich habe es jetzt gelöst. Ich schreibe jetzt gar nichts mehr in einer DataTable, sondern sobald man auf einen Knoten klickt, ermittel ich die Unterpunkte und gehe diese mit einem SqlDataReader durch. Während diesem Durchlauf erstelle ich dann meine Knoten und fertig!
Gruß
Echo
P.S. Danke nochmal für eure Hilfe! 🙂
@BerndFfm
Ich lasse mir ja am Anfang mittels des DataAdapters alle Datensätze in eine DataTable laden, die zur ersten Ebene gehören. Gehst du dann diese Datensätze durch und überprüfst nochmal per SQL-Statement, ob diese Schicht noch Unterknoten besitzt oder wie machst du das?
Wie realisierst du denn das ermitteln der Unterknoten? Ich lasse mir momentan eine weitere DataTable mit Punkten der nächsten Ebene erstellen und versuche sie dann mit der "Haupt"-DataTable zusammenzufügen. Wobei das momentan nicht richtig klappt.
Gruß
Echo
verwendetes Datenbanksystem: SQL Server 2005
Hallo!
Ich arbeite gerade mit dem TreeView und möchte nicht direkt am Anfang alle Datensätze laden, sondern erst beim jeweiligen markieren eines Knotens. Am Anfang lade ich alle Hauptknoten in eine DataTable und binde Sie an das TreeView.
Das ermitteln und nachladen der Unterpunkte mache ich im "AfterSelect" - Ereignis. Dazu habe ich die TreeView-DataTable mit einer anderen DataTable (die die Unterpunkte enthält), per Merge-Befehl zusammengeführt.
Wie kann man es aber nun realisieren, dass beim erneuten Klick auf den Knoten, nicht wieder die gleichen Unterknoten nochmal hinzugefügt werden, sondern nur die neu in der Datenbank hinzugekommen sind, z.B. durch einen anderen Benutzer?
Gruß
Echo
Da ich meine DataTable an ein BindingSource binde, habe ich es jetzt mit dem BindingSource Event "PositionChanged" gelöst!
Ich meine es klappt zwar jetzt, aber ist das aus eurer Sicht zu empfehlen oder nicht?
Danke für eure Hilfe!
Gruß
Echo
Also, die "SelectionMode" habe ich schon auf "fullrowselect" stehen.
Schönen guten Morgen!
Ich habe zwei DGV's auf meiner Form und lasse die Daten einer Tabelle im erste DGV anzeigen. Nun möchte ich die jeweils dazugehörigen Datensätze der 2. Tabelle im zweiten DGV anzeigen, aber da habe ich gerade ein kleines Problem. Ich hatte es so vorgehabt, dass bei jedem Wechsel der Zeile im ersten DGV, eine Methode ausgeführt wird, die eine DataTable mit den dazugehörigen Datensätzen erstellt und an das zweite DGV bindet.
Nun habe ich mir gedacht, dass ich im "SelectionChanged" - Ereignis, die jeweilige ID auslese, aber dabei bekomme ich den Fehler, dass der Index außerhalb des Bereichs liegt.
Mein Ereignis sieht so aus:
private void dgvMain_SelectionChanged(object sender, EventArgs e)
{
string sID = dgvMain.SelectedRows[0].Cells[0].Value.ToString();
MessageBox.Show(sID);
}
Habt ihr vielleicht einen Tipp für mich? Danke schonmal!
Gruß
Echo
So jetzt läufts!
Das einzige Problem, was ich noch habe ist, dass mit der Sortierung. Wie bekommt man es denn hin, dass beim "BindingSource.AddNew()", automatisch auf den neuen Datensatz gesprungen wird?
Gebe ich nämlich die Sortierung mit "BindingSource = "Name ASC";" an, so wird nicht der neue Datensatz markiert und nachher beim navigieren, sprich "BindingSource.MoveNext();" z.B. wird auch nicht richtig durch die Daten gegangen, wie es z.B. im DGV angezeigt wird.
Gruß
Echo
Hallo!
Ich habe jetzt erstmal die Sortierung rausgenommen, damit es erstmal so läuft. Mein Problem ist jetzt das ich beim Löschen, nachdem ich z.B. einen neuen Datensatz hinzugefügt habe und diesen danach sofort wieder löschen möchte, bekomme ich eine Parallelitätsverletzung.
"Der DeleteCommand hat sich auf 0 der erwarteten 1 Datensätze ausgewirkt."
Das Hinzufügen:
private void btnNeu_Click(object sender, EventArgs e)
{
bindingsource.AddNew();
}
Das Speichern:
private void btnSave_Click(object sender, EventArgs e)
{
bindingsource.EndEdit();
da.Update(ds, "dt_Test");
ds.Tables[0].AcceptChanges();
}
Und hier das Löschen:
private void btnLoeschen_Click(object sender, EventArgs e)
{
bindingsource.RemoveCurrent();
bindingsource.EndEdit();
da.Update(ds, "dt_Test");
ds.Tables[0].AcceptChanges();
}
Habt ihr ne Idee, woran das liegen könnte?
Gruß
Echo
P.S. Danke für eure bisherigen Antworten!
verwendetes Datenbanksystem: SQL Server 2005
Schönen guten Abend!
Ich brauche mal kurz eure Hilfe zu folgender Sache. Ich habe ein Fenster indem ich Datensätze anlegen, löschen und ändern möchte. Ich fülle mir also ein Dataset mit einer Tabelle und binde diese an eine BindingSource. Diese Daten zeige ich dann in einem DGV an.
dgvTest.DataSource = bindingsource;
Für die Commands habe ich mir ein SqlCommandBuilder erstellt.
Nun möchte ich gerne per Klick auf den Button "Neu" eine neue Zeile hinzufügen und diese dann nachher per Button "Speichern" in die Datenbank zurückschreiben.
Die neue Zeile erstelle ich folgendermaßen:
private void btnNeu_Click(object sender, EventArgs e)
{
bindingsource.AddNew();
}
Hier wird nun ein neuer Datensatz erzeugt und dieser auch selektiert!
Gebe ich nun die Daten in die TextBoxen ein und möchte diese Eingaben danach dann speichern, werden zwar die Daten in die Datenbank geschrieben, aber es wird nun ein anderer Datensatz markiert und nicht mehr der gerade neu erstellte!
private void btnSave_Click(object sender, EventArgs e)
{
bindingsource.EndEdit();
da.Update(ds, "dt_Test");
}
Wie kann man es nun hinbekommen, dass nach dem Speichern dieser neue Datensatz weiterhin markiert wird?
Die BindingSource lasse ich wohl beim Laden der Daten per "bindingsource.Sort = "Name ASC" sortieren.
Ich hoffe, ihr könnt mir weiterhelfen!
MfG
Echo
P.S. Ist diese Vorgehensweise überhaupt Ok oder kann man das noch eleganter lösen? Über den Designer möchte ich das nämlich nicht machen!
Danke für deine Antwort!
Mein Problem ist aber nun das Holen der anderen Daten zum jeweiligen Datensatz.
Ich müsste in einer Tabpage z.B. Sachen aus einer anderen Tabelle zu dem jeweiligen Datensatz anzeigen (n:m Beziehung). Die Daten sollen ja erst dann ermittelt werden, wenn man auf diese Tabpage klickt. Lege ich also für diese Tablasche eine neue DataTable im DataSet an und fülle diese immer wieder mit den jeweiligen Daten oder wie macht man das am besten?
Das Anlegen eines neuen Datensatz in den Daten, die ich am Anfang direkt lade und in einer BindingSource drinstehen habe, diese lege ich doch am besten per "BindingSource.AddNew()" an, oder?
Gruß
Echo
verwendetes Datenbanksystem: SQL Server 2005
Hallo!
Ich habe ein Fenster in dem sich ein TabControl mit mehrere Tabpages befindet. Auf der ersten Page habe ich ein DGV, indem ich alle Datensätze (ausgewählte Spalten) aus einer Tabelle anzeige. Auf den nächsten Laschen möchte ich dann zu dem ausgewählten Datensatz aus dem DGV weitere Informationen anzeigen. Wie kann man das am besten realisieren?
Bis jetzt habe ich in der "Form_Load" erstmal mir alle Datensätze geholt, die im DGV angezeigt werden sollen. Sprich ich hole mir die Sachen und lade sie in eine DataTable, die sich in einem DataSet befindet. Dieses DataSet habe ich dann an eine BindingSource gebunden. Diese BindingSource habe ich dann ans DGV gebunden.
Ist das so schon in Ordnung oder wie würdet ihr das nachher machen?
Die Daten für die weiteren Informationen sollen dann halt immer erst geladen werden, wenn man auf die jeweilige TabPage klickt.
Vielen Dank für eure Hilfe schonmal im Voraus!
Gruß
Echo
Hallo!
Hier mal ein Bild vom Layout der Anwendung.
Das obere Fenster soll Eingabefelder beinhalten und beim Klick auf eine Gruppe geöffnet werden. Dieses Fenster soll die ganze Zeit angezeigt werden, sprich bis man halt links im Menü eine andere Gruppe ausgewählt hat.
Hat man nun eine Gruppe ausgewählt und klickt dann auf ein Item, so soll dann das dazugehörige Fenster im unteren Bereich angezeigt werden. Klickt man auf das nächste Item, so soll das untere Fenster geschlossen und ein neues geöffnet werden.
Die Fenster sollen nicht verschiebbar sein, also halt "FormBorderStyle" = None!
Ich hoffe, ich könnt euch jetzt eher vorstellen, was ich so vorhab!
Gruß
Echo
Danke erstmal für eure Antworten!
@Andreas.May
Du hast Recht, es ist (zumindest für mich) noch ein wenig zu komplex! Welche Fremdanbieter Controls meinst du denn, mit denen man das vielleicht leichter realisieren kann?
@markus.bodlos
Das hat soweit geklappt, aber wie kann ich denn beim Klick auf einen Button das untere Fenster schließen und ein anderes dort öffnen? Ich habe ja nachher links ein Menü, indem ich mehrere Punkte habe, über die ich ja ein Fenster im unteren Bereich öffne. Wie bekomme ich nun den Namen des unteren Fensters raus, damit ich weiß welches ich schließen muss, bevor ich ein neues öffne?
MfG
Echo
Hallo,
ich versuche gerade eine MDI-Anwendung zu schreiben und mein derzeitiges Layout ist folgendermaßen:
Ich habe oben und links an der Seite jeweils ein Toolstrip. In der Mitte ist also nun der Bereich in dem die Fenster geöffnet werden sollen. Mein Vorhaben ist nun (an dem ich momentan etwas verzweifle) folgendes:
Ein MDIChild maxiermiert öffnen, indem sich im oberen Bereich Eingabefelder befinden und im unteren halt alles frei ist. (klappt!)
Das erste MDIChild bleibt geöffnet und es soll im unteren Bereich ein neues Fenster geöffnet werden. (klappt nicht)
Nach Klick auf einen Button, soll das untere Fenster geschlossen werden und ein anderes im unteren Bereich geöffnet werden. (klappt nicht)
Ich habe es schon mit einem SplitContainer versucht, aber das Fenster welches im unteren Bereich angezeigt werden soll, passt sich nicht dem ganzen unteren Bereich an!
Habt ihr vielleicht ne Idee, wie man soetwas lösen könnte?
MfG
Echo
P.S. Sry, wg. dem Titel! (mir fiel nichts anderes ein)
Erstmal vielen Dank für eure Antworten! (ich schein ja eine größere Diskussion angezettelt zu haben! 😉 )
Da ich mich mit diesem Thema erst jetzt so richtig beschäftigen muss, habe ich nochmal eine Frage:
Wie sieht es denn aus, wenn ich mehrere Sachen in die DB auslagere und der Kunde nachher ein Patch oder Service Pack des SQL Servers installiert, gab es da schonmal Probleme oder könnte es zu Komplikationen kommen?
Gruß
Echo
verwendetes Datenbanksystem: SQL Server 2005
Hallo!
Ich habe da mal eine generelle Frage an euch! Versucht ihr so viel Code wie möglich in die Datenbank auszulagern, wie z.B. Stored Procedures usw. oder lasst ihr sowas in eurem eigentlichen Programmcode?
Gibt es Vor- und Nachteile?
Vielen Dank!
Gruß
Echo
Hallo!
Ich wollte mal fragen, ob ihr mir vielleicht ein Buch zur Programmierung mit einem SQL Server 2008 empfehlen könnt?
Ein Einsteigerbuch (Wie installiere ich einen, Wie richte ich ihn ein usw.) und für später vielleicht auch etwas weiterführendes!
Vielen Danke schonmal im Voraus!
Gruß
Echo
Hallo!
Per Klick auf einen Button, öffne ich eine Textdatei per "Process.StartInfo.FileName = ...". Nachdem die Datei geschlossen wurde, wird das "Exited-Event" ausgelöst und eine Methode zum Speichern wird von mir ausgelöst.
Nun zu meinem Problem:
Kann man dem "Exited-Event" neben den festgelegten Parametern (wie z.B. object sender) noch weitere hinzufügen? Ich benötige nämlich noch weitere Informationen für meine Methode, die ich vorm Öffnen der Textdatei ermittelt habe.
Vielen Dank im Voraus!
MfG
Echo]6[
Hallo!
Habe das Problem gelöst indem ich im Filterstring mit "SUBSTRING" gearbeitet habe, jetzt bekomme ich auch die Ergebnisse, die ich wollte! 😉
Gruß
Echo
Hallo!
Ich habe es jetzt mal mit Herbivores Vorschlag versucht, aber es will nicht klappen.
ds.Tables["Adressen"].DefaultView.RowFilter = "Name >= '" + "a" + "' AND Name < '" + "s'";
Ich habe drei Datensätze in meiner DataTable:
Führe ich den o.g. Filter aus, bekomme ich nur 1 Zeile zurück, nämlich die mit Max. Ich weiß echt nicht wo dran das liegen könnte. Habt ihr vielleicht ne Idee?
Ich möchte halt alle Namen angezeigt bekommen, die mit den Buchstaben a bis t beginnen.
Gruß
Echo
Einen schönen guten Tag!
Ich möchte eine Tabelle aus meinem DataSet filtern. Und zwar sollen mir alle Werte aus der Spalte "Namen" die mit dem Buchstaben "a" bis einschließlich "t" beginnen angezeigt werden.
Mit folgendem Code probiere ich es derzeit:
ds.Tables["Adressen"].DefaultView.RowFilter = "Name >= '" + "a" + "' AND Name <= '" + "t'";
Der Code funktioniert soweit, nur er zeigt mir leider nicht die Namen, die mit "t" anfangen an!
Was mache ich falsch?
Gruß
Echo
Hallo!
Nee, das ist es leider nicht! 🙁
MfG
Echo
Guten Tag!
Ich habe in meinem DGV zweil Spalten und die erste ist eine TextBoxColumn. Zuerst hatte ich das Problem, dass bei der Eingabe in dieser Zelle kein Zeilenumbruch stattfindet, was ich aber mit
column.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
hinbekommen habe. Verlasse ich aber nun diese Zelle wird mein ganzer Text wieder nur in eine Zeile geschrieben. Wie kann ich nun auch diesen Zeilenumbruch anzeigen, wenn ich mich nicht im Editiermodus in dieser Zelle befinde?
Meine 2. Frage wäre, wie man es realisieren kann, dass man beim drücken der "Return-Taste" in der Zelle einen Absatz macht und nicht den Editiermodus beendet?
Vielen Dank!
MfG
Echo
Danke für deine Antwort!
Meine bisherige Vorgehensweise war ja, dass ich mein Programm starte und ich diese Verbindung erst aufbaue, wenn der Benutzer einen bestimmten Menüpunkt aufruft. Sollte ich jetzt lieber die Verbindung schon beim Programmstart aufrufen und dann beim Auswählen des Menüpunkts nur noch die Daten reinholen?
Programmstart: Herstellen und öffnen der Verbindung!
sConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Datenbank.mdf;Integrated Security=True;User Instance=True";
con = new SqlConnection(sConnectionString);
con.Open();
con.Close();
Menüpunktaufruf: Aufrufen der Daten!
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM tbl_Artikel";
ds = new DataSet();
da = new SqlDataAdapter(cmd);
con.Open();
da.Fill(ds, "Artikel");
con.Close();
ArtikelBindingSource.DataSource = ds;
ArtikelBindingSource.DataMember = "Kunden";
ArtikelBindingSource.Sort = "Name ASC, Vorname ASC, Strasse ASC";
dgvArtikel.DataSource = ArtikelBindingSource;
Wenn das so richtig sein sollte und ich auch verstanden habe, wie bekomme ich aber beim "Aufruf der Daten" den Zugriff auf mein ConnectionObjekt, welches ich dem "SqlCommand" zuweise und vor dem "da.Fill" öffne?
Gruß
Echo
Hallo!
Ich arbeite gerade mit dem Visual Studio 2005 und den SQL Server Express 2005! Ich baue mir gerade eine Programm zur Verwaltung von Artikeln usw. auf. Auf einer Form habe ich nun ein DataGridView indem ich meine ganzen Datensätze anzeigen lasse. Die Verbindung zur Datenbank stelle ich folgendermaßen im "Form_Load" her:
sConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Datenbank.mdf;Integrated Security=True;User Instance=True";
con = new SqlConnection(sConnectionString);
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM tbl_Artikel";
ds = new DataSet();
da = new SqlDataAdapter(cmd);
con.Open();
da.Fill(ds, "Artikel");
con.Close();
ArtikelBindingSource.DataSource = ds;
ArtikelBindingSource.DataMember = "Kunden";
ArtikelBindingSource.Sort = "Name ASC, Vorname ASC, Strasse ASC";
dgvArtikel.DataSource = ArtikelBindingSource;
Nun zu meiner Frage, da ich noch nicht lange so lange mit Datenbanken arbeite: Ist 1. dieser Weg so in Ordnung und 2. ich habe zu Testzwecken mal knapp über 100 Datensätze erstellt und dabei braucht er schon, wenn er sie zum ersten Mal lädt so 10 oder mehr Sekunden. Kann man irgendwie das Laden und Anzeigen der Daten im DataGridView beschleunigen? Denn es sollte bei dieser Tabelle schon so auf 5000 Datensätze hinauslaufen!
Vielen Dank schonmal im Voraus!
Gruß
Echo
@ marco.b
Hast du vielleicht ein kleines Beispiel, wie ich vielleicht ein Div über ein anderes Div (sprich DropZone) verschieben kann und ich per AlertBox die Id der DropZone erhalten kann? Mittels diesem "srcElement" und "e.target"......
Vielen Dank schonmal im Voraus!
MfG
Echo
Hallo!
Ich versuche die "Drag&Drop"-Funktionalität auf meiner Seite zu realisieren, wobei ich aber noch ein paar Probleme habe. Ich arbeite gerade mit diesem Beispiel
Damit kann ich ja die vorhandenen Div's verschieben. Nun wollte ich mir zwei weitere Divs erstellen, die als sogenannte "DropZone" dienen. Lasse ich nun ein Div über diese "DropZone" fallen, soll das Div die Position der "DropZone" annehmen. Wie kann ich aber die "ID" der "DropZone" ermitteln, wenn ich mich mit einem Div über diese befinde und loslasse?
Ich brauche ja die "ID" der "DropZone", damit ich die Daten der Position ermitteln kann!
Vielen Dank schonmal im Voraus!
MfG
Echo
Hallo!
Ja kann ja gut sein, aber wie mache ich das, dass der Kalender nur dann erscheint, wenn ich den Fokus in die Textbox setze. Und vorallem, wie mach ich das, dass er das Datum was ich dann auswähle auch in die Textbox übernimmt?
Benutze das AJAX Control Toolkit!
Füge deiner WebForm eine "TextBox", sowie einen "CalendarExtender" hinzu!
Gebe in der Eigenschaft "TargetControlID" des CalendarExtenders, die ID deiner "TextBox" an!
Fertig!
MfG
Echo
Hallo!
Ich habe 6 Buttons auf meiner Form, so wie ein HiddenField, in der eine Zahl zwischen 1-6 stehen kann. Steht nun im HiddenField eine 3, dann möchte ich nur drei Buttons anzeigen lassen. Die Bezeichnung der Buttons sieht so aus "btnFeld1", "btnFeld2" usw.!
Wie kann man nun diese sechs Buttons durchgehen, um sie anzuzeigen bzw. zu verstecken?
Mein Versuch war dieser hier:
int dAnzahlButtons = Convert.ToInt32(Hidden1.Value);
for (int i = 1; i <= dAnzahlButtons; i++)
{
btnFeld[i].Visible = true;
}
Bei diesem Ansatz bekomme ich den Fehler, dass der Name nicht im aktuellen Kontext vorhanden ist.
Vielen Dank schonmal im Voraus!
MfG
Echo
Hi, versuchs mal hiermit!
DialogResult dr = MessageBox.Show("Wirklich löschen?", Info, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
// Dein Code zum löschen
}
else
{
// nix
}
Hoffe es hat dir geholfen!
Gruß
Echo
@GarlandGreene
Habe es jetzt mal mit dem Paging ausprobiert und es klappt soweit, auch wesentlich schneller! Danke
@BerndFfm
Hast du für dieses ListView im Virtual Mode ein paar Links zu Beispielen oder ähnliches?
Meinst du mit ListView vielleicht die DataList oder so, denn das ListView gibt es doch nur bei den WinForms, oder?
Gruß
Echo
Hallo!
Ich benutze zur Zeit als Datenbank den "ADS" von Extended Systems und wollte eine Tabelle in einem GridView anzeigen lassen, welches auch soweit ganz gut klappt. Jetzt wollte ich mal ausprobieren, wie es mit der Performance aussieht, wenn ich eine große Tabelle (über 8000 Datensätze) benutze und diese dann an ein "GridView" binden möchte. Versuche ich dies über den ganz normalen Weg mittels "DataAdapter" und "DataSet" hängt sich mein Rechner regelrecht auf und er hat nach 5 Minuten immer noch nichts angezeit bekommen.
Nun zu meiner Frage: Welchen Weg sollte man am besten gehen, um sich mit solch großen Datenmengen schnell verbinden und auch schnell anzeigen lassen zu können?
Gruß
Echo
P.S. Ich benutze das VS2005!
Jo danke, klappt jetzt! 👍
Doch nun nochmal zur 2. Frage meines ersten Posts:
Wisst ihr vielleicht warum er in dem "Accordion"-Control den Zeilenumbruch im Firefox nicht anzeigt?
<ajaxToolkit:AccordionPane ID="AccordionPane2" runat="server" BackColor="Blue">
<Header>
<a href = "" onclick = "return false;" class = "accordionLink"> Übersicht</a>
</Header>
<Content>
<asp:LinkButton ID="lkbMenuepunkt1" runat="server" CssClass="contentLink">Menuepunkt1</asp:LinkButton>
</br>
<asp:LinkButton ID="lkbMenuepuntk2" runat="server" CssClass="contentLink">Menuepunkt2</asp:LinkButton>
</Content>
</ajaxToolkit:AccordionPane>
Zwischen diesen beiden LinkButtons macht er nur den Zeilenumbruch im IE und im FF positioniert er die LinkButtons direkt nebeneinander!
Gruß
Echo
P.S. Vielen Dank nochmal!
Hi!
Versuch es doch einfach mal damit:
document.style.background-image = "der pfad zum bild"
Gruß
Echo
Danke erstmal für deine Antwort!
Ich habe jetzt mal diese "if-Bedingung" mit reingebracht.
<title>Untitled Page</title>
<!--[if gte IE 6.0]>
<link rel="Stylesheet" href="IE.css" type="text/css" />
<![endif]-->
In meiner CSS-Datei habe ich rein zu Testzwecken erstmal nur die "background-color" des "bodys" verändert und das klappt auch mit dem IE!
Nur wie mache ich es mit dem Firefox? Habe auch eine CSS-Datei angelegt mit einer anderen "background-color", aber er verändert den Hintergrung nicht! Habe schon mehrere Möglichkeiten für den Namen ausprobiert wie z.B. FF, Firefox oder mozilla.
<!--[if gte firefox 1.5]>
<link rel="Stylesheet" href="FF.css" type="text/css" />
<![endif]-->
Wie kann man es denn nun für diesen Browser realisieren?
Gruß
Echo