webForumDet fria alternativet

dataGrid/listiew - Töm via knappklick ?

.NET

12 svar · 523 visningar · startad av T_Codez

Medlem sedan juli 2001458 inlägg
Frågan#1

Hej

Här kommer en "Tung" newbiefråga. :)

Jag har en knapp "clear_btn" och i den vill jag ska tömma innehållet i en textbox, en listView och en datagrid.

textboxen är np. men de övriga är det.

Så här är det.

data fylls på i listviewern och i datagriden från en array vid en sökning.

när jag sedan vill göra en ny sökning. Så vill jag tömma
allt från presentationsmöjligheterna på den data som finns
ute för tillfället.

Hur gör jag det?

Tacksam för alla svar / hintar etc. :e

/ T

Medlem sedan juli 2001458 inlägg
#2

Ingen tyngre trafik här idag (3-5 timmar senare)... *suck* :l

Kan det vara så att man kanske ska tömma arrayen och sen
läsa upp en tom för tt tömma griden / lisrViewern ?

Då är frågan också. Hur tömmer man en array? :l

Medlem sedan sep. 20011 914 inlägg
#3
tbTextBoxt.Text = "";
lstlistView.Clear();
dgDataGrid.DataSource = new string[0];
Medlem sedan juli 2001458 inlägg
#4

Thankz Dino! :e

Det är härligt när det är för enkelt för att vara sant!

Medlem sedan nov. 2003569 inlägg
#5

hmm vill du clear:a ett datagrid sätter du

dataGrid1.DataSource=null;

och inte:

dgDataGrid.DataSource = new string[0];
----------------------------------------------

Och du ska inte använda en array för att fylla ett datagrid. Det vore som att kasta pärlor till svin.
Använd i möjligaste mån DataTables eller DataSet.

Medlem sedan maj 20012 812 inlägg
#6

Och du ska inte använda en array för att fylla ett datagrid. Det vore som att kasta pärlor till svin.
Använd i möjligaste mån DataTables eller DataSet.

Påstår du på allvar att en array skulle vara tyngre än en DataTable eller ett DataSet?

Sedan finns tillfällen då en array är bra mycket mer motiverad att använda än en DataTable/Dataset för att fylla en DataGrid, jag skulle dock tänka mig om att använda en DataGrid i de tillfällena (och det flesta andra också!).

Säg att du har ett objekt som heter Kund, nu har du skapat en array med 10 kunder. Det är bra mycket bättre att binda denna array med 10 kunder direkt till DataSetet än att gå omvägen via att första skapa DataTablet/DataSetet och fylla dessa med de 10 kunderna och sedan binda Tablen/Setet mot griden. Det är ingen som har sagt att han hämtar datan från en databas, även om det är mest troligt.

- M

Medlem sedan juli 2001458 inlägg
#7

Hej

Kul att det blivit lite diskussion. :)

Jag skull bara vilja säga att Nöff's alternativ:

  dataGrid1.DataSource=null;

Var bättre än Dinos förslag för att datagriden fick en kolumn med namnet "Lenght". men det ger inte nöffs förslag.

Tack nu go herr'n för det :-)

Vad det gäller arrayen eller snarare arraylisten, så känns det smidigare då jag hämtar data (Users) från Active Directory / Windows 2000 Server. Så indirekt är det ju ingen databas.

Kommer nog att återkomma i ämnet ganska så snart... För senare kommer jag vilja sortera genom klick på colmnerna etc. både i en datagrid och en listView.

Tack för uppmärksamheten :e

Medlem sedan nov. 2003569 inlägg
#8

Påstår du på allvar att en array skulle vara tyngre än en DataTable eller ett DataSet?

Hehehe, har du aldrig hört utrycket "kasta pärlor till svin?". Kan ta ett annat exempel. Du köper en fetingdator och så använder du den som miniräknare, det är ungefär likadant.

Det har inte att göra med att en array skulle vara tungdrivet, utan det har att göra med att ge winform dataGrid:en det den är ämnad för. Ett winform dataGrid behöver kolumndata och autoincrement kolumner för att funka korrekt. Testa följande exempel.

			DataTable table=new DataTable();
			
			DataColumn IDkolumn=new DataColumn();
			IDkolumn.ColumnName="ID";
			IDkolumn.AutoIncrement=true;
			IDkolumn.AutoIncrementSeed=1;
			IDkolumn.AutoIncrementStep=1;
			IDkolumn.DataType=typeof(System.Int32);
			table.Columns.Add(IDkolumn);

			DataColumn Namnkolumn=new DataColumn();
			Namnkolumn.ColumnName="Namn";
			Namnkolumn.DataType=typeof(System.String);
			table.Columns.Add(Namnkolumn);

			dataGrid1.DataSource=table;

DataTables och DataSets lever i symbios med winform dataGrid:s och för att illustrera detta har jag knåpat ihop följande ärade exempel:

				DataSet thedataset=new DataSet();
				thedataset.DataSetName="Ett mycket fint DataSet";
			

					DataTable Kundtable=new DataTable();
					
					Kundtable.TableName="KundTabell";

					DataColumn IDkolumn=new DataColumn();
					IDkolumn.ColumnName="ID";
					IDkolumn.AutoIncrement=true;
					IDkolumn.AutoIncrementSeed=1;
					IDkolumn.AutoIncrementStep=1;
					IDkolumn.DataType=typeof(System.Int32);
					Kundtable.Columns.Add(IDkolumn);

					DataColumn Kundkolumn=new DataColumn();
					Kundkolumn.ColumnName="Namn";
					Kundkolumn.DataType=typeof(System.String);
					Kundtable.Columns.Add(Kundkolumn);

					thedataset.Tables.Add(Kundtable);

					DataTable Bestallartable=new DataTable();
					Bestallartable.TableName="BestallarTabell";

					DataColumn IDkolumn2=new DataColumn();
					IDkolumn2.ColumnName="ID";
					IDkolumn2.AutoIncrement=true;
					IDkolumn2.AutoIncrementSeed=1;
					IDkolumn2.AutoIncrementStep=1;
					IDkolumn2.DataType=typeof(System.Int32);
					Bestallartable.Columns.Add(IDkolumn2);

					DataColumn KundIDkolumn=new DataColumn();
					KundIDkolumn.ColumnName="KundID";
					KundIDkolumn.DataType=typeof(System.Int32);
					Bestallartable.Columns.Add(KundIDkolumn);

					DataColumn Produktkolumn=new DataColumn();
					Produktkolumn.ColumnName="Produkt";
					Produktkolumn.DataType=typeof(System.String);
					Bestallartable.Columns.Add(Produktkolumn);

					thedataset.Tables.Add(Bestallartable);

					thedataset.Relations.Add(IDkolumn,KundIDkolumn);

					thedataset.EnforceConstraints=true;

				dataGrid1.DataSource=thedataset;

Om du går in i "Kund" tabellen och trycker på det lilla plustecknet nu på varje row så kommer du in undertabellen "Bestallar" . Det är för att dessa 2 tabeller har en relation till varandra. Prova nu att lägga in lite värden i "Produkt" kolumnen, märker du att "KundID" kolumnen lägger automatiskt till "KundID" och att autoincrement "ID" ökar allt eftersom du lägger till rader?. Shysst va?... Ja, med detta fina lilla exempel vill jag demonstrera hur fint DataSets och DataTables arbetar ihop med winforms dataGrids. Nästa lektion tänkte jag berätta lite hur DataSet och dataGrids hanterar 2 vägsbindning.

Medlem sedan maj 20012 812 inlägg
#9

Hehehe, har du aldrig hört utrycket "kasta pärlor till svin?". Kan ta ett annat exempel. Du köper en fetingdator och så använder du den som miniräknare, det är ungefär likadant.

Det var just det jag syftade på, varför köpa en värstingdator (dataset) när du klara dig med en miniräknare (arrayn).

Och ivårt fall så varför använda något som är stort och tungt (datasetet) när du klara samma uppgift men något som är litet och lätt (arrayn). Det kan man kalla kasta pärlor åt svinen, eller dåligt prestanda uttnytjande.

DataSet och DataGrids har sina funktioner, men för att presenterar enkel data är det verkligen overkill att använda. ungefär som att använda en Lastbil i gammla stan när du skall transporterar din 1.5 liters läsk.

- Magnus

Medlem sedan okt. 2002188 inlägg
#10

Nöff skrev:

Det har inte att göra med att en array skulle vara tungdrivet, utan det har att göra med att ge winform dataGrid:en det den är ämnad för. Ett winform dataGrid behöver kolumndata och autoincrement kolumner för att funka korrekt. Testa följande exempel.

Är väl snarare så att datagridden är ämnad för att ta emot ett interface såsom IBindinglist, ett interface bland fler, och att dataseten implementera detta interface.

Medlem sedan nov. 2003569 inlägg
#11

Gladh. Kan du visa mig hur du lägger till poster i ett datagrid som använder en array, och sen sparar dessa i databasen eller något annat format.
Och om användaren vill sortera tabellen eftersom det blev så många rader, hur gör du då?

Och i det här fallet ska han använda ett DataTable eftersom det bara handlar om 1 tabell.

Är väl snarare så att datagridden är ämnad för att ta emot ett interface såsom IBindinglist, ett interface bland fler, och att dataseten implementera detta interface.

Datagriden har mer funktioner än bara det.

Medlem sedan maj 20012 812 inlägg
#12

Gladh. Kan du visa mig hur du lägger till poster i ett datagrid som använder en array, och sen sparar dessa i databasen eller något annat format.
Och om användaren vill sortera tabellen eftersom det blev så många rader, hur gör du då?

Vi har redan haft denna disskution tidigare och behöver inte ta upp den här, eftersom det inte har med tråden att göra.

- m

Medlem sedan nov. 2003569 inlägg
#13

Jag vill ju bara få er att förstå ;)

252 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)