Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von raiguen
Thema: Daten aus 2 Tabellen in ein DataGridView füllen
Am im Forum: Datentechnologien

Zitat
entweder ein leeres DataGridView
Entweder passt die WHERE-Klausel nicht oder die JOIN-Bedingung findet keine passenden Datensätze.
Zitat
oder eine SQLException von wegen "Falsche Syntax in der Nähe von 'Tische'".
Der Fehler liegt wohl eindeutig hier:


SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische 
Zur Verdeutlichung:
SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische
Die Tische haben da nichts zu suchen...


Ansonsten schließe ich mich FZelle an.

Thema: SubItems in ToolStripDropdownButton
Am im Forum: GUI: Windows-Forms

Zitat
Eine Methode für "...DropDownItems[x].SubItems.Add()" fehlt mir iwie.
Die gibt es auch nicht, sondern 'nur' DropDownItems.Add().

Habe mal einen kurzen Schnippsel für exemplarische Vorgehensweise, an dem ersichtlich wird, wie Du Dein 'Problem' lösen könntest (natürlich Deinen Bedürfnissen/Erfordernissen anpassen!):


            //--DropdownItems zur Laufzeit zu einem bestehenden DropDownButton hinzufügen
            ToolStripMenuItem tsmiLevel0, tsmiLevel1 ;
            //--Rootebene
            tsmiLevel0 = new ToolStripMenuItem();
            tsmiLevel0.Text = "Level0 Eintrag 1";
            tsmiLevel0.Tag = "Level0Tag1";

            //--Unterebene
            tsmiLevel1 = new ToolStripMenuItem();
            tsmiLevel1.Text = "Level1 Eintrag 0.1";
            tsmiLevel1.Tag = "Level1 Tag0.1";
            //--in die Rootebene aufnehmen
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

            tsmiLevel1 = new ToolStripMenuItem();
            tsmiLevel1.Text = "Level1 Eintrag 0.2";
            tsmiLevel1.Tag = "Level1 Tag0.2";
            //--in die Rootebene aufnehmen
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

            //--alle DropDownItems zum DropDownButton hinzufügen
            toolStripDropDownButton2.DropDownItems.Add(tsmiLevel0);


            //-- neue Rootebene (=Level 0)
            tsmiLevel0 = new ToolStripMenuItem();
            tsmiLevel0.Text = "Level0 Eintrag 2";
            tsmiLevel0.Tag = "Level0Tag2";

            //--Unterebene (=Level 1)
            tsmiLevel1 = new ToolStripMenuItem();
            tsmiLevel1.Text = "Level1 Eintrag 2.1";
            tsmiLevel1.Tag = "Level1 Tag1.1";
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

            tsmiLevel1 = new ToolStripMenuItem();
            tsmiLevel1.Text = "Level1 Eintrag 2.2";
            tsmiLevel1.Tag = "Level1 Tag1.2";
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

            toolStripDropDownButton2.DropDownItems.Add(tsmiLevel0);


             //-- neuen DropDownButton zur Laufzeit mit allen erforderlichen Ebenen hinzufügen
            ToolStripDropDownButton tsddButton;

            tsddButton = new ToolStripDropDownButton("Neuer Buttton");
            //-- neue Rootebene (=Level 0)
            tsmiLevel0 = new ToolStripMenuItem();
            tsmiLevel0.Text = "Level0 Eintrag 1";
            tsmiLevel0.Tag = "Level0Tag2";

            //--Unterebene (=Level 1)
            tsmiLevel1 = new ToolStripMenuItem();
            tsmiLevel1.Text = "Level1 Eintrag 1.1";
            tsmiLevel1.Tag = "Level1 Tag1.1";
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

            tsmiLevel1 = new ToolStripMenuItem();
            tsmiLevel1.Text = "Level1 Eintrag 1.2";
            tsmiLevel1.Tag = "Level1 Tag1.2";
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

            tsddButton.DropDownItems.Add(tsmiLevel0);
            toolStrip1.Items.Add(tsddButton);



Zu jedem neuerstellten ToolStripMenuItem tsmiLevel1 kann beispielsweise auch gleich das passende Ereignis abonniert werden:


            tsmiLevel1.DropDownItemClicked += new ToolStripItemClickedEventHandler(tsmiLevel1_DropDownItemClicked);

...
            tsmiLevel1.Tag = "Level1 Tag1.1";
            tsmiLevel1.DropDownItemClicked += new ToolStripItemClickedEventHandler(tsmiLevel1_DropDownItemClicked);
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);

...
            tsmiLevel1.Tag = "Level1 Tag1.2";
            tsmiLevel1.DropDownItemClicked += new ToolStripItemClickedEventHandler(tsmiLevel1_DropDownItemClicked);
            tsmiLevel0.DropDownItems.Add(tsmiLevel1);



       void tsmiLevel1_DropDownItemClicked( object sender, ToolStripItemClickedEventArgs e )
        {   //--nur als exemplarisches Beispiel
            string itemtag =  e.ClickedItem.Tag.ToString();
            //--mach was auch immer, z.B. Detaildaten anhand des geklickten Items bzw des Tags holen...
        }

Thema: Textbox mit DataBinding aktualisiert sich nicht beim einfügen einer neuen Zeile
Am im Forum: GUI: Windows-Forms

Die BindingSource bzw die gebundene DataSource scheint die Aktualisierung nicht mitbekommen zu haben...
Versuch's mal mit

bs.ResetBindings(true);
Näheres BindingSource Methoden

Thema: Listview komplett drucken
Am im Forum: Grafik und Sound

Das hier dürfte für Dich interessant sein und Deinen Wünschen/Bedürfnissen entsprechen:

Easily turn a ListView into a nicely printed report, complete with print preview

Der ListViewPrinter druckt ALLE Spalten/Zeilen eines ListView - selbst Gruppierungen und forlaufende Seiten sind schnell in der Druck-Vorschau angezeigt.

Setze diese DLL oft ein und das Ergbenis ist auch für meine Kunden zufriedenstellend.

Der beigefügte Screeshot zeigt die Preview aus einem meiner Programme.

Thema: gebundene DropDown Combobox, falsche Eingabe abfangen
Am im Forum: GUI: Windows-Forms

Wie wäre es mit AutoComplete? Weitere Infos auch bei MSDN ComboBox.AutoCompleteMode-Eigenschaft

Wie bei dem Beispiel AutoComplete ComboBox in Visual C# 2010 gezeigt, werden die Benutzereingaben schon passend vorgefiltert.

Thema: TabControl - Tabpage darf nicht vom Nutzer gewechselt werden
Am im Forum: GUI: Windows-Forms

Zitat
Hallo Theo,
alles was du tun müsstest, wäre die Benutzereingaben zu behandeln. Klickt der Nutzer mit der Maus auf einen Tab oder wählt diesen mit der Tastatur aus, setzt du ein Flag in deiner Form.
Hallo inflames2k: warum alles so verkomplizieren, wenn man es auch einfacher machen kann?
Zitat von "chilic"
Es ist aber alles andere als empfehlenswert, weil man von so einem Control gewohnt ist und auch erwartet, dass man beliebig drin hin und her schalten kann.
Genau das sollte man vermeiden: den User zu verärgern dahingehend, dass er sich ärgert/wundert, warum (hier z.b.) ein Tabwechsel nicht möglich ist.
Wenn - wie in Theos Szenario - nur zwei Panels (nicht anderes sind TabPages) abwechselnd sichtbar sein sollen, dann kann ich entweder die Tabreiter verstecken (und dennoch sind die TabPages codemässig wechselbar) oder eben ein SplitPanel-Container benutzen, wo die entsprechenden Panels dann sichtbar gemacht werden. Nicht mehr und nicht weniger.

Thema: Menü bzw. TabControl benutzerabhängig gestalten
Am im Forum: GUI: Windows-Forms

Denkbar ist

tabControl1.TabPages.Remove(tabPage1); //Ausblenden

tabControl1.TabPages.Add(tabPage1); //Einblenden
sprich: die nicht gewünschten Tabs aus der TabPageCollection des betr. TabPageControls entfernen (bedingt natürlich, dass die Collection=die TabPages bereits zur Designzeit vorhanden ist).

Das nicht sichtbar machen in Abhängigkeit des Benutzers (entweder über eine Art Login oder über den Computernamen/Netzwerknamen) ist allemal besser als die entspr. Tab nur zu disablen -> würde nur unnötige Fragen des Benutzers produzieren ;)

Thema: TabControl - Tabpage darf nicht vom Nutzer gewechselt werden
Am im Forum: GUI: Windows-Forms

Entweder die Tabreiter zur Laufzeit verstecken:

         //diese Einstellungen verstecken die Reiter erst zur Laufzeit
         //zur Design-Zeit sind die Reiter ja sehr nützlich
         tabControl1.SizeMode = TabSizeMode.Fixed;
         tabControl1.ItemSize = new Size(0, 1);
         tabControl1.Appearance = TabAppearance.Buttons;

siehe auch TabControl als Basis für Assistenten und sowas

oder einen SplitContainer-Control anstelle des TabPageControl verwenden

Thema: DataGridView -> BindingNavigator: Problem beim Löschen
Am im Forum: GUI: Windows-Forms

Das DataGRidView ist standardmässig im Editiermodus wie es scheint...

Setze filterDataGridView.AllowUserToAddRows = false;, dann ist das DataGRidView nicht mehr autom. im Editiermodus, wenn auf bzw in eine Zelle geklickt wird. Du kannst dann nur noch über den +-Buttom einen neuen Datensatz anfügen bzw den dann auch gleich wieder löschen, ohne dass in eine Zelle was eingetragen wird.

Thema: Möglichkeiten einer ListViewGroup Untergruppen hinzuzufügen
Am im Forum: GUI: Windows-Forms

Das 'Normale' ListView kennt nur eine Stufe der Gruppierung, Untergruppierungen sind nicht möglich.

Letztlich ist die Frage, nach welchen Kriterien die Gruppen generiert werden...

Vllt ist das hier eine Möglichkeit: VirtualTreeListView

Thema: Ausklappbares Window
Am im Forum: GUI: WPF und XAML

Dann musst Du auf die Ereignisse 'Collapsed' bzw 'Expanded' des Expanderkontrol entsprechend reagieren bzw dort die Fenstergrösse anpassen...

Thema: Was ist das für ein Widget? (Bild ist im Thread)
Am im Forum: GUI: WPF und XAML

Tipp zum Selbermachen (als Anregung) RepeatButton

Thema: SelectedRows einer DatenGridView mit bindingsource kopieren...
Am im Forum: Datentechnologien

mehrere Möglichkeiten, um zum gewünschten Ergebnis zu kommen:

a.) DGV ist an eine Datenquelle gebunden:


			if (personDataGridView.SelectedRows != null && personDataGridView.SelectedCells.Count > 1)
			{

				foreach (DataGridViewRow dgvr in personDataGridView.SelectedRows)
				{
					DataRowView drv = (DataRowView)dgvr.DataBoundItem;
					if (drv != null)
					{
						object[] dgvrItems = drv.Row.ItemArray;
						//--evtl. Änderungen vor Übernahme in neue Tabelle
						dgvrItems[0] = Convert.ToInt16(dgvrItems[0]) * 100;
						dgvrItems[1] = (string)"irgendwas";
						//--Erstellen einer neuen Tabellenzeile und Einfügen derselben
						dtKopie.Rows.Add(dgvrItems);
					}
				}

			}



b.) DGV hat keine Datenquelle:


			if (personDataGridView.SelectedRows != null && personDataGridView.SelectedCells.Count > 1)
			{

				foreach (DataGridViewRow dgvr in personDataGridView.SelectedRows)
				{
					if (dgvr != null)
					{
						DataGridViewCellCollection dgvrItems = dgvr.Cells;
						//--Erstellen einer neuen Tabellenzeile und 
						//--Werten der Zellen füttern

						DataRow newrow = dtKopie.NewRow();
						for (int i = 0; i < dgvrItems.Count; i++)
						{
							newrow[i] = dgvrItems[i].Value;
						}
						//--evtl. Änderungen vor Übernahme in neue Tabelle
						newrow[0] = Convert.ToInt16(dgvrItems[0].Value) * 100;
						newrow[1] = (string)"irgendwas";

						//--neue und geänderte Zeile der Tabelle hinzufügen
						dtKopie.Rows.Add(newrow);
					}

				}

			}


:rtfm:DataBound :rtfm: DataRowView

Code entsprechend Deinen Bedürfnissen anpassen (Tabellenbezeichnung etc);
Codeschnippsel aus einem meiner Projekte und dient nur zur Veranschaulichung
Zitat
dTable.Rows.Add(newRows.DataBoundItem as DataRow); // Exception: DataBoundItem = NULL !!?? [/quote] Dürfte klar sein -> eine neue Tebellenzeile ist an nix gebunden

Rainer

[EDIT] Code wg. Fehler korrigiert [/EDIT]

Thema: ComboBox: Benutzer soll Einträge aus DropDown-Liste löschen, ohne dass aktuelle Eingabe verschwindet
Am im Forum: GUI: Windows-Forms

Zitat
...Text im Textfeld der ComboBox eingebe, dann die Dropdownliste öffne und einen Eintrag selektiere,...
dann ist das Standardverhalten der Combobox doch so, dass das selektierte Item in der Dropdownliste oben in der Textbox erscheint/angezeigt wird.
Wenn nun das selektierte Item gelöscht wird, dann ist im Endeffekt kein Item mehr selektiert und somit kann dann auch nix mehr in der Textbox angezeigt werden.

Arrrghhhh... ich merke grad beim Testen, dass das blosse überfahren mit der Maus über einen Eintrag in der Dropdownliste schon den SelectedIndex setzt, also nicht erst beim explizieten Klick auf ein Item... 8o Das hätte ich jetzt nicht erwartet und JETZT verstehe ich auch das Beispielbild vom TS...

Aber.. ich glaube ich habe die Lösung des Problems gefunden:

		private void comboBox1_KeyDown(object sender, KeyEventArgs e)
		{
			if (e.KeyCode == Keys.Delete && comboBox1.DroppedDown && comboBox1.Items.Count > 1 && comboBox1.SelectedIndex > -1)
			{//--Text merken der in der CB-Textbox steht
			 string cbtext = comboBox1.Text;
				e.Handled = true;
				comboBox1.Items.RemoveAt(comboBox1.SelectedIndex);
				//--gemerkten Text wieder einsetzen
				comboBox1.Text = cbtext;
			}

		}
Im Übrigen sollte man auch den Wert von SelectedIndex abfragen, da sonst bei -1 eine Exception geworfen wird.

MfG Rainer

Thema: DataGridView auf Null prüfen?
Am im Forum: Datentechnologien

Hier zeigt sich, dass die Verwendung einer BindingSource das Ganze etwas 'geschmeidiger' macht:


public Form1() {
   InitializeComponent();

   BindingSource meineBindingSource = new BindingSource();
   meineBindingSource.DataSource = meinDataTable; // oder auch DataSet.Table[xyz];
   meineBindingSource.CurrentChanged += new EventHandler(meineBindingSource_CurrentChanged);
   meinDataGridView.DataSource = meineBindingSource;

...
}

	  void meineBindingSource_CurrentChanged(object sender, EventArgs e)
	  {
		  DataRow row = ((DataRowView)meineBindingSource.Current).Row;
		  if (row != null)
		  textBox2.Text = row[4].ToString();
	  }


Sinnvoll wäre aber auch, die Textbox(en) direkt an die zugrunde liegende Datenquelle zu binden - besonders dann, wenn man in den Textboxen noch Änderungen vornehmen will... und die Änderungen sicherlich auch in die Tabelle übernehmen möchte ;)


  textBox3.DataBindings.Add("Text",meineBindingSource, NameDerSpalte);

Thema: Kann ich den Inhalt eines Forms komplett in ein anderes Form einbetten?
Am im Forum: GUI: Windows-Forms

Zitat
Daher meine Frage: Kann ich Forms komplett in ein anderes Form einbetten? So, dass ich auf meiner eigentlichen "HauptGUI" einen Container habe und da per Knopfdruck ein anderes Form vollständig reinladen kann.
JA, das geht :)
Jede WindowsForm hart eine Eigenschaft, die sich TopLevel nennt. Setzt man diese auf false, so kann ich die Form x-beliebig in einen anderen Container palzieren; Beispiel:

		private void button1_Click(object sender, EventArgs e)
		{
			Form1 frm1 = new Form1();
			frm1.FormBorderStyle= System.Windows.Forms.FormBorderStyle.None;
			frm1.TopLevel=false;
			frm1.Parent=groupBox1;
			frm1.Dock = DockStyle.Fill;
			frm1.Location = new Point(3,20);
			frm1.Visible=true;
			frm1.BringToFront();
		}

Als 'Übungsbeispiel' habe ich mal fix ne Solution erstellt ;) Ist nur als reine Demo, ,um die Vorgehensweise zu zeigen.

Ich habe in vielen meiner Projekte das so gemacht, da ich nicht ständig die - in meinen Augen - unflexiblen UserControls haben wollte.

Gruß Rainer

Thema: ToolTip in einem DataGriedView, Zuweisung dauert zu lange
Am im Forum: GUI: Windows-Forms

Probier's doch mal so:


private void  dataGridViewVeranstaltungen_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
{
		if (e.RowIndex < 0)
			return;

        DataGridViewRow Zeile = dataGridViewVeranstaltungen.Rows[e.RowIndex];

        if (Zeile.Cells[11].Value != null)
        {
           Veranstaltung_alleinfos Event = (Veranstaltung_alleinfos)Zeile.Cells[11].Value;
           Zeile.Cells[1].ToolTipText = Event.asTextList;
           Zeile.Cells[2].ToolTipText = Event.Veranstalter.showTextAsList;
                 
		if (e.ColumnIndex>2)
        {
            Zeile.Cells[e.ColumnIndex].ToolTipText = Event.asTextList;
        }
    }
}




Thema: dataGridViewCheckbox mit 0/1-Integer-Werten füllen
Am im Forum: GUI: Windows-Forms

Nachtrag:

Mithilfe der DataGridViewCheckBoxColumn kann auch der Wert einer Tabellenspalte vom TypVarChar bzw String als true bzw false angezeigt werden.
Bspw. wenn in einer Mitgliedertabelle die Spalte 'Status' als String deklariert ist und die Werte 'aktiv' bzw 'inaktiv' enthält, sind die Value-Werte der Checkbox dann so zu notieren:

            cbcol.TrueValue = "aktiv";    //true
            cbcol.FalseValue = "inaktiv";    //false
            cbcol.DefaultCellStyle.DataSourceNullValue = "inaktiv";    //wenn Wert in Spalte = NULL ist

Oder wenn in o.a. Tabelle die Spalte 'Aktiv' benamt ist und nur die Einträge 'J' bzw 'N' zulässt, dann wird das halt so notiert:

            cbcol.TrueValue = "J";    //true
            cbcol.FalseValue = "N";    //false
            cbcol.DefaultCellStyle.DataSourceNullValue = "N";    //wenn Wert in Spalte = NULL ist


Also muss für zur Darstellung eines BOOLEAN-Zustandes nicht zwangsläufig auch das Tabellenfeld BOOLEAN sein ;)

Thema: dataGridViewCheckbox mit 0/1-Integer-Werten füllen
Am im Forum: GUI: Windows-Forms

Zitat von "RonnyW"
Ich habe eine MySQL-DB in der sich in einer Tabelle eine Spalte befindet, die nur den Wert 0/1 annehmen kann....
...hab zwar bei der erstellung boolean angegeben, aber nun steht tinyint(1) als datentyp drin ...
Ist auch richtig so, da MySql den Typ BOOLEAN als TinyInt 'versteht'.
Zitat von "RonnyW"
...Nachtrag: Die Tabelle wird somit dynamisch erzeugt und auch die Spalten sind nicht im DGV vorher angelegt, also gibts da keine Möglichkeit gleich als DGVCheckbox zu definieren, zumindest mir nicht bekannt, daher frag ich auch.

Du kannst / solltest in diesem Fall auch die Spalten des DGV dann dynamisch erstellen. Ist zwar etwas Code tippen, aber erfüllt dann Deine Zweck ;)


		void GridVorbereiten(DataGridView dgv)
		{	//--WICHTIG!! Wenn nicht gesetzt, werden beim Binden an eine DataSource
			//--alle Spalten der DataSource(DataTable) zusätzlich generiert!!
			dgv.AutoGenerateColumns = false;

			DataGridViewCheckBoxColumn cbcol = new DataGridViewCheckBoxColumn();
			cbcol.Width = 20;
			cbcol.HeaderText = "...";
			cbcol.DataPropertyName = "MySql-TinyInt-Spalte";
			//--Spalte in der Tabelle ist vom Typ Int (bei MySql=TinyInt für BOOLEAN)
			//--wenn man ganz sicher gehen will, dann kann man das hier noch zusätzlich angeben:
			cbcol.TrueValue = 1;	//true
			cbcol.FalseValue = 0;	//false
			cbcol.DefaultCellStyle.DataSourceNullValue = 0;	//wenn Wert in Spalte = NULL ist
			dgv.Columns.Add(cbcol);

			DataGridViewTextBoxColumn txtcol;
			txtcol = new DataGridViewTextBoxColumn();
			txtcol.HeaderText = "...";
			txtcol.DataPropertyName = "...";
			txtcol.Width = 200;
			dgv.Columns.Add(txtcol);

			//--an die Datenquelle binden
			dgv.DataSource = DataTable_aus_MySQLAbfrage;
		}


Das DGV ist durchaus in der Lage, in einer DataGridViewCheckBoxColumn Int-Werte zu interpretieren: 0 ist false, 1 ist true ;)

Zitat von "ErfinderDesRades"
Du mußt nach dem Einlesen die int-Werte nach bool konvertieren, und vor dem wegschreiben annersrum.
Wurde schon gesagt: DGVCheckboxColumn ist dafür da, bools anzuzeigen, keine ints
NÖÖ: Muss man nicht! Siehe meine Ausführung oben ;) Für Die DGVCheckBoxColumn ist 0=false und 1=true

Und für das Wegschreiben in die MySql-Tabelle ist es für die TinyInt-Spalte auch unerheblich, welcher Wert übergeben wird
 SET TinyIntSpalte=0 
 SET TinyIntSpalte=false
 SET TinyIntSpalte=FALSE
Alle Schreibweisen sind richtig.

Übrigens: selbst ohne die expliziete Zuweisung

			cbcol.TrueValue = 1;	//true
			cbcol.FalseValue = 0;	//false
wird der 'Zustand' der DGVCheckboxColumn richtig angezeigt ;)
Zitat von "gfoidl"
Beim Binden gibt es dann keine Problem mehr.
Gibt es bei meiner o.a. Bindung auch nicht.
Zitat von "gfoidl"
Aber ich denke auch im DataTable muss der Datentyp auf bool festlegbar sein und somit sollt sich das Problem auch lösen können.
Die DataTable bzw das Schema derselben wird aus der MySql-Abfrage generiert und da ist der Spaltentyp NICHT Boolean sondern TinyInt bzw Int - somit kann hier dann nix festgelegt werden.

Gruß Rainer

Thema: DataGridView mit erster Zeile einer DataTable füllen
Am im Forum: GUI: Windows-Forms

Zitat
Ob ein DGV mit DBNull.Value werten umgehen kann, habe ich nicht ausprobiert.
Und warum nicht? Denn dann wüsstest du, dass das DGV sehr geschmeidig mit NullValues umgehen kann.

Allerdings sehe ich JETZT erst, was Du machst: Jede Spalte der DataRow wird als neue ZEILE im DGV hinzugefügt, also eine senkrechte Abbildung einer waagerechten Zeile... DANN ist es verständlich, dass keine NULL-Zeilen vorhanden sein düerfen ;)


Vereinfacht kannst du aber auch das hier machen, ohne den 'Umweg' üver ein extra ItemArray (weil die Spalten einer DataRow direkt über den Index angesprochen werden können):

            for (int i = 0; i < dRtest.ItemArray.Length; i++) 
            {
                if (dRtest[i] != DBNull.Value) {
                    dgvRowNames.Rows.Add(dRtest[i].ToString());
                }
            }

Thema: Filter für Datagridview filtert nur Anzeige, aber nicht datatable
Am im Forum: GUI: Windows-Forms

Die Zeilennummer des DGV (=RowId) IST nicht immer auch die gleiche Zeilennummer der zugrunde liegenden DataTable. Das DGV ist ja wie der Name bereits sagt, nur eine bestimmte Ansicht der Daten.

Um auf den richtigen datensatz der zugrunde liegenden DataTable (oder DataSource) zu kommen, um bspw. denWert einer nicht im DGV sichtbare Spalte ( z.B. ID der Adresse) zu erhalten, hilft das hier:


		private void mein DataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
		{
			DataRowView dr = meinDataGridView.CurrentRow.DataBoundItem as DataRowView;
			gesuchteID = Convert.ToInt16(dr["ID"]);
		}

Zitat
Mir scheint, dass nachdem filtern immer noch die ursprüngliche datatable da ist, wie bekomme ich das hin, das mit dem filtern auch die datatable refresht wird???
Natürlich ist die ursprüngliche DataTable noch vorhanden, warum sollte die sich auch ändern? Und das Filtern refresht eigentlich nicht die DataTable als solches, sondern intern wird (vereinfacht gesagt) anhand der Filterbedingung eine DataRowCollection erstellt und diese dann dem DGV zur Ansicht weitergereicht.
Zitat
Klicke ich eine Zeile ohne Filter (sagen wir die 7. - Herr Mueller) öffne ich ein weiteres Fenster und ich lese weitere Daten aus einer anderen Tabelle einer db aus.
Bist Du sicher, dass es auch die RICHTIGEN Daten dieses Herrn Müller sind? Beim ersten Erstellen des DGV kann es zufälligerweise so sein, wenn nicht schon vorher programmtechnisch eine Sortierung für die Ansicht vorgenommen wurde.
Zitat
werden aber die Daten des Eintrags angezeigt, die zuvor an erster Stelle meines datagrid standen.
Dann holst du die Daten der anderen Tabelle anscheinend anhand der DGV-RowId (hier gleich 0). DAS kann dann ja auch nicht funktionieren ;)

Thema: DataGridview: Checkbox Value kann durch User nicht geändert werden
Am im Forum: GUI: Windows-Forms

Folgende Vorgehensweise habe ich in einem meiner zahlreichen Projekte realisiert und es funktioniert tadellos.



/* dgvAdressen -> DataGridView
  datentabelle -> DataTable
*/

//-- einmaliges Erstellen/konfigurieren des DGV
        internal void gridViewSpaltenErstellen()
        {	//-- ggf. mittels Designer eingestellte Properties:
            dgvAdressen.BorderStyle = BorderStyle.None;
            dgvAdressen.AutoGenerateColumns = false;	//WICHTIG!! SONST hauts dir ALLE Spalten aus der Tabelle auf den Schirm!
            dgvAdressen.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            //dgvAdressen.ReadOnly = true;
            dgvAdressen.RowHeadersVisible = false; // linkste Spalte mit dem Dreieck
            dgvAdressen.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;

            DataGridViewCheckBoxColumn colcb = new DataGridViewCheckBoxColumn();
            colcb.HeaderText = "";
            colcb.Width = 30;
            colcb.SortMode = DataGridViewColumnSortMode.NotSortable;
            dgvAdressen.Columns.Add(colcb);

            DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();

            col = new DataGridViewTextBoxColumn();
            col.HeaderText = "Firma";
            col.DataPropertyName = "K_Firma";
            col.Width = 300;
            col.ReadOnly = true;
            col.SortMode = DataGridViewColumnSortMode.NotSortable;
            dgvAdressen.Columns.Add(col);

            col = new DataGridViewTextBoxColumn();
            col.HeaderText = "Name";
            col.DataPropertyName = "K_Vorname";//-- K_Nachname wird für Newsletteranrede benutzt
            col.Width = 150;
            col.ReadOnly = true;
            col.SortMode = DataGridViewColumnSortMode.NotSortable;
            dgvAdressen.Columns.Add(col);

            col = new DataGridViewTextBoxColumn();
            col.HeaderText = "EmailAdresse";
            col.DataPropertyName = "EMail";
            col.Width = 320;
            col.ReadOnly = true;
            col.SortMode = DataGridViewColumnSortMode.NotSortable;
            dgvAdressen.Columns.Add(col);

        }

//-- Daten holen 

        void datenHolenUndTabelleFuellen()
        {//--Datenbank abfragen
            datentabelle = KontaktData.KontaktEmailAdressen();
            //--DataGridView an Tabelle binden
            dgvAdressen.DataSource = datentabelle;

			//--alle checkboxen erstmal auf Checked setzen
            for (int i = 0; i < dgvAdressen.RowCount; i++)
            {
                dgvAdressen.Rows[i].Cells[0].Value = true;
            }

        }




In diesem Beispiel kann der Benutzer auswählen, ob jmd. einen Newsletter erhalten soll oder nicht (je nachdem, ob in der ersten Spalte ( DataGridViewCheckBoxColumn) das Häkchen gesetzt ist).
Es kann also in einem DGV durchaus auch eine ungebundene Spalte enthalten sein ;)

Thema: Beim Ein-/Ausblenden von Panels sollen die nachfolgenden automatisch nach unten/oben rutschen
Am im Forum: GUI: Windows-Forms

Moin :)

ICh weiss genau was du willst :) und für diesen Zweck packst du alle Panels in einen Container -> FlowLayoutPanel.#
Einstellung/Eigenschaft FlowDirection auf TopDown.

Thema: DataSet verschwindet
Am im Forum: Datentechnologien

NAchdem ich auch zweimal mit dem VS-generierten Dataset etc. auf die Programmierfresse geflogen bin, erstelle ich mir alles Datenbankspezifische grundsätzlich nur noch manuel. Erstens habe ich das Gewurstel der ganzen Designer nicht, zweitens weiss ich selber am besten was ich wo mache und drittens habe ich da einen besseren Überblick.

Ich weiss nicht (mehr) wie ich damals die Fehler (so wie du sie beschrieben hast) bzw die Änderung(en) wieder allgemein bekannt gemacht habe...

Sorry, wird dir zwar nixcht weiterhelfen, aber ich pers. lasse von den ganzen VS-Automatismen und Designer-Assistenten die Finger.

Thema: int=null in die Access 2007 Datenbank schreiben mit Insert Into
Am im Forum: Datentechnologien

Ist normalerweise nicht meine Art, aber hier muss ich doch wohl was zu sagen:

Zitat von i-rek
Sorry, aber ich muss lachen.
Ich habe für euch sg. Experten paar Sachen umgebaut und ihr konntet das Problem nicht lösen geschweige ihr habt es verstanden, worum es geht....
WIR sog.Experten haben es sehr wohl verstanden, was DEIN Problem ist und DIR auch entsprechende Lösungsvorschläge gemacht.
Zitat von i-rek
Statt dessen werde ich immer aufgefordert dies und jenes zu machen ...
Du wurdest mehrfach 'aufgefordert', den SQL-Befehl zu parametrisieren, damit DEIN Problem elegant gelöst werden kann. Aber du hast es nicht verstanden, sondern frickelst immer noch mit zusammengestöpselten Commandstrings herum. DANN kannst DU dein Problem auch nicht lösen!!
Zitat von i-rek
Ich vergeude hier nur meine Zeit und ihr tut es auch,...
Deine Zeit vergeudest du selber, in dem du mit unzureichenden 'Löungen' hedrum experemntierst, anstatt die gut gemeinten Hinweise umzusetzen und auszutesten!!
Wir haben unsere Zeit in der Tat dahingehend vergeudet, Dir immer wieder zu sagen, wie Du es RICHTIG zu machen hast ==>> Parameter verwenden...
Zitat von i-rek
statt noch vieles über Programmieren zu lernen....
Zitat
Ich glaube, DU MUSST noch viel über Programmieren lernen - uind vor allem: Dokumentationen lesen, lesen, lesen....
Zitat von i-rek
Nehmt es nicht persönlich, aber im großen und ganzen seid ihr nicht weiter als ein durchschnittlicher Inoformatikstudent im 2.Semester.
Vorsicht mein Guter!! Das kann man schon persönlich nehmen! Lehne dich nicht zu weit aus dem Fenster - vor allem dann nicht, wenn man nicht ansatzweise die funktionierenden Hinweise von gestandenen Programmierern annimmt und austestet!

So, das musste ich mal loswerden *sorry*

Thema: *.ini mit verschiedenen Sektionen auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Verstehe die Fragestellung nicht ganz...

Würde eher vermuten, dass diese Bedingung

Zitat

if (((IList<string>)my_sections).Contains(sectionToFind))
nicht ganz funktioniert; weil: du prüfst einen ungetrimmten Eintrag mit einem getrimmten Vergleichswert

Thema: ComboBox SelectedValue auslesen
Am im Forum: GUI: Windows-Forms

Zitat von med
...Doch dies wirft mir eine cast Exception in der letzten Zeile....

So sollte es richtig gecastet werden:


UID = Convert.ToInt16(cb.SelectedValue);

Thema: Mehrere Dateien mit OpenFileDialog öffnen
Am im Forum: GUI: Windows-Forms


            string Pfad = string.Empty;

                foreach (string pfad in openFileDialog1.FileNames)
                {
                    _items.Add(Pfad);
                }

        
Die o.a. Zeilen sind dann ja wohl mehr als flüssig = überflüssige, ne?

Thema: Mit C# Verbindung zu remote MySQL Server
Am im Forum: Datentechnologien

@hias116.

Ein kurzer Blick in die FAQ, Stichwort Programmierung deines Hosters sagt:
(... innerhalb von 1 Minute gefunden )

Zitat
Kann die DB von außen erreicht werden?

Nein, die MySQL ist nur vom jeweiligen Rechner ("localhost") erreichbar, Änderungen diesbezüglich klären Sie direkt mit dem Support.
Damit dürfte es wohl klar sein, dass es so ohne weiteres also nicht geht.

Warum werden die FAQ's zum Hoster etc nicht gleich und sorgfältig gelesen ?( 8o

Gruss
Rainer

Thema: Text in Labels ausrichten
Am im Forum: GUI: Windows-Forms

Und wie wäre es mithilfe des DataGridView?
Mag zwar overheded sein, aber das bietet sich doch an!?

Die erste Spalte mit TextAlign = rechtsbündig, die 2. Spalte default auf Linksbündig.

Zusätzliche Einstellungen für das DGV:
BackGroundColor = Hintergrundfarbe des ParentControls
BorderStyle=None
CellBorderStyle=None
CellHeadersVisible=Flaer
ReadOnly=True
MultiSelect=False
RowHeadersVisible=False
ScrollBars=None

Befüllen des DGV codemässig zb:


		  //--StringArray-Liste mit den Werten erstellen
		  List<string [ ]> dgvList = new List<string [ ]> ( );
		  dgvList.Add ( new string [ ] { "Zeile 1:", "Wert1" } );
		  dgvList.Add ( new string [ ] { "Zeile Nr.2:", "Wert2" } );
		  dgvList.Add ( new string [ ] { "irgendetwas:", "x-beliebiger Wert" } );

		  //--ListArray als DatenZEile ins DGV einfügen
		  for ( int i = 0; i < dgvList.Count; i++ )
			  {
			  dataGridView1.Rows.Add ( dgvList [ i ] );
			  }

		  //--oder direkt die DataRows mit den entsprechenden 'Labels' erzeugen
		  dataGridView1.Rows.Add ( new string [ ] { "Zeile 1:", "Wert1" } );
		  dataGridView1.Rows.Add ( new string [ ] { "Zeile Nr.2:", "Wert2" } );
		  dataGridView1.Rows.Add ( new string [ ] { "irgendetwas:", "x-beliebiger Wert" } );

		  //--die defaultmaässige Selection der ersten ZElle deaktivieren
		  dataGridView1.ClearSelection ( );
		  dataGridView1.Enabled = false;


Beispielbild siehe unten. BorderStyle und BackgroundColor zur Demo hier noch nicht gesetzt.