webForumDet fria alternativet

Hantera val av rad i datagridview?

.NET

3 svar · 487 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Jag har tidigare använt mig av OnSelectionChanged för att välja rad och där med relaterad data i mina DataGridView's. Idag stötte jag på ett problem som jag haft mycket av tidigare och det är att jag hamnar i en loop av något slag för laddningen. Den går in i att ladda relaterad data fler gånger än vad som skulle alls vara möjligt (20ggr på 4 rader??) Byter jag ut till OnClick istället så försvinner den elaka loopen direkt.

Har jag hajjat händelsen helt fel? Ska inte OnSelectionChanged användas på det viset som jag tänkte mig?

Medlem sedan jan. 20022 440 inlägg
#2

Jag har fortfarande problem med det här. När jag väljer en rad i den ena datagridviewn så körs onselectedindexchanged 2 ggr. Varför gör den det? Hur hindrar jag att mina detailcontrols laddas två gånger med samma data "by the book"?

Som det är nu har jag gjort som såhär att jag sätter en statisk variabel för formen som heter _currentSortTableID som sätts varje gång jag väljer en ny rad i min huvudgridview och sedan kör jag koden nedan.

private void dgvSortTable_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
	if (!_isLoading && (e.StateChanged == DataGridViewElementStates.Selected))
	{
		if (_currentSortTableID == ((SortTables)e.Row.DataBoundItem).ID)
			return;

		_currentSortTableID = ((SortTables)e.Row.DataBoundItem).ID;
		BindDetailControls(_currentSortTableID);
	}
}

Tycker dock att det är "fult" att göra på det viset. Kan man göra annorlunda?

Medlem sedan aug. 20003 575 inlägg
#3

Allt beror väl lite på vad du gör i din kod, är eventmetoden tom körs det flera gånger då också?

Medlem sedan jan. 20022 440 inlägg
#4

Nickemannen skrev:

Allt beror väl lite på vad du gör i din kod, är eventmetoden tom körs det flera gånger då också?

Nu körs den bara en gång... mycket underligt! Ska väl tillägga att jag ändrade tillbaka till OnSelectionChanged.

336 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
202 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)