Article View: alt.pl.comp.lang.csharp
Article #9835Re: datagrid parę pytań
From: Rafal M
Date: Mon, 07 Nov 2005 06:01
Date: Mon, 07 Nov 2005 06:01
95 lines
3631 bytes
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-mailReferences:
<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