🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #9835

Re: datagrid parę pytań

#9835
From: Rafal M
Date: Mon, 07 Nov 2005 06:01
95 lines
3631 bytes
Karol69@op.pl wrote:
> Witam
> 
> Jest sobie jakiś tam DataGrid powiązany z jakims DataSet. I teraz pytanka:
> 1. Umiem wyciągnąć z DataGrida który wiersz jest zaznaczony. I umiem 
> wycignąć ten wiersz z DataSet ale pod warunkiem, że na DataSet nie ma 
> filtra. Jak wyciagnąc dane po przefiltrowaniu? Przestaje mi sie pokrywać 
> index wiersza z DataGrida z tym co mam w DataSet.
> 2. Jak sprawdzić ile wierszy jest w DataGridzie? Ja robię to tak:
> int i = 0;
> try
> {
>     while(true)
>     {
>         if(this.dgTabelka.IsSelected(i))
>         {
>             Tu cośtam z zaznaczonym
>         }
>         i++;
>     }
> }
> catch(Exception exc)
> {
> }
> 
> ale nie wydaje mi się to elegancką metodą. Jak ładnie wyciągnąć które 
> wiersze przy wielu zaznaczonych są zaznaczone. I jak potem wyciągnąc 
> dane z DataSet dla tych wierszy?
> 3. I jak w DataSet mam 2 rabelki powiązane ze sobą. Tego DataSet tworzę 
> wczytując plik xml. To po naciśnięciu plusika przy wierszu pojawia się 
> link do powiązanych wartości. Czy da się to tak skonfigurować ,żeby po 
> naciśnięciu plusika pojawiały się wartości w tabelce?
> 
> Pozdrawiam
> KArol

To nalezy wkleic do UserControlDataGrid:DataGrid

public DataRow GetCurrentRow()
		{
			if (this.DataSource != null)
			{
				string nazwa_tabeli = "";
				DataSet ds = null;
				if (this.DataSource.GetType() == typeof(DataSet))
				{
					ds = (DataSet)this.DataSource;
					nazwa_tabeli = this.DataMember;
					int wierszAktualny = this.CurrentRowIndex;
					int iloscWierszy = ds.Tables[nazwa_tabeli].Rows.Count;
					if (wierszAktualny != -1 && iloscWierszy > 0 && iloscWierszy > 
this.CurrentRowIndex)
					{
						CurrencyManager cm = (CurrencyManager)this.BindingContext[ds, 
nazwa_tabeli];
						DataView dv = (DataView)cm.List;
						DataRowView drv = dv[cm.Position];
						DataRow wiersz = drv.Row;
						return wiersz;
					}
					else
					{
						return null;
					}
				}
				else if (this.DataSource.GetType() == typeof(DataView))
				{
					DataTable t = ((DataView)this.DataSource).Table;
					ds = t.DataSet;
					nazwa_tabeli = t.TableName;
					int wierszAktualny = this.CurrentRowIndex;
					int iloscWierszy = ds.Tables[nazwa_tabeli].Rows.Count;
					if (wierszAktualny != -1 && iloscWierszy > 0 && iloscWierszy > 
this.CurrentRowIndex)
					{
						CurrencyManager cm = 
(CurrencyManager)this.BindingContext[this.DataSource];
						DataView dv = (DataView)cm.List;
						DataRowView drv = dv[cm.Position];
						DataRow wiersz = drv.Row;
						return wiersz;
					}
					else
					{
						return null;
					}
				}
				else
				{
					return null;
				}
				
			}
			return null;
		}
Technical Details
Message-ID: <dkmqj5$598$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <dkmcjg$s2f$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Rafal M <rafalm1980@gazeta.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: datagrid parę pytań
Date: Mon, 07 Nov 2005 07:01:08 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 95
Message-ID: <dkmqj5$598$1@inews.gazeta.pl>
References: <dkmcjg$s2f$1@news.onet.pl>
NNTP-Posting-Host: user0.167.udn.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1131343272 5416 82.139.0.167 (7 Nov 2005 06:01:12 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Mon, 7 Nov 2005 06:01:12 +0000 (UTC)
In-Reply-To: <dkmcjg$s2f$1@news.onet.pl>
X-Accept-Language: en-us, en
X-User: rafalm1980
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit