Recuperer une date d une DataTable [Résolu]

Signaler
Messages postés
8
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
21 mai 2007
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Bonjour,

je dois realiser une application BirthdayBook. Ma premiere form contient des noms avec des dates d anniversaires. Ma deuxieme form doit recuperer les infos sur la date de la ligne selectionnee   pour calculer l age de la personne.
Mon pb est que je n arrive pas a recuperer la date. Je ne sais pas si c est parce que la ligne n est pas reelement selectionnee ou si je n utilise pas la bonne methode pour la retrouver.

Je dois faire pareille pour la plus jeune personne, mais meme si je classe mon tableau, je me retrouve avec du 01/01/0001.

Je suis completement perdue. Please je recherche desesperement qqun pour m aider a comprendre cette application.

10 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
J'ai surtout l'impression que tu initialises la variable dtDob qui est a l'interieur de ta méthode cretaDateObjects(), mais pas celle de ta classe. (En fait, tu redeclares dtDob dans createDateObjects() )

Donc comme le disait bidou this.dtDob a surement la valeur DateTime.Min

Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Salut

Avec qques bouts de codes (ceux qui n'agissent pas comme tu le souhaites), ce serait plus simple pour nous si tu veux qu'on t'aide ;)

Mx
MVP C# 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Salut,
Oui, un peu de code
Sinon 01/01/0001 correspond à DateTime.Min, peut-être que le DateTime n'a pas été initialisé ?

<hr size="2" />-Blog-
Messages postés
8
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
21 mai 2007

ok dsl








//Initialize everything on startup

//Create a data table with two columns






this
.m_ds =

new



DataSet
(DataSetName);


this
.m_BBookTable =

new



DataTable
(TableName);


this
.m_BBookTable.Columns.Add(

new



DataColumn
(NameCol,

Type
.GetType(

"System.String"
)));


this
.m_BBookTable.Columns.Add(

new



DataColumn
(DateCol,

Type
.GetType(

"System.DateTime"
)));


//The GridView needs a source, and the table should be added to the set

BBookGrid.DataSource = m_BBookTable;

...

private
void createDateObjects(){dtNow =

DateTime.Now;

DateTime dtDob;
dtDob = (
DateTime)m_BBookTable.Rows[1][DateCol];

}

public
String Rien(){AveAge = dtDob.Date.ToString();

return AveAge;
}

Et donc AveAge me renvoie 01/01/0001.  Elle sert un peu a rien la derniere fonction, je suis d accord
Mais si ma Table contient des donnees, alors ma dateTime est initialisee non ?

Merci bcp si vous pouvez jeter un rapide coup d oeil. Je suis sure que c rien mais je vois pas ou je peche.

herissonne
Messages postés
8
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
21 mai 2007

Merci bcp bcp bcp.
Juste une derniere petite question si c possible. Comment je  peux changer dans

dtDob = (DateTime)m_BBookTable.Rows[1][DateCol];

Rows[1] pour avoir la ligne sur laquelle ma souris a clique une fois et est donc pseudo-selectionne? 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Dans l'event MouseDown de ton DataGridView tu peux faire qqch comme ceci :

DataGridView.
HitTestInfo hit =
this.dataGridView.HitTest(e.X, e.Y);

if (hit.Type ==
DataGridViewHitTestType.Cell)
{
  
int rIndex = hit.RowIndex;
  
int cIndex = hit.ColumnIndex;
}

<hr size="2" />-Blog-
Messages postés
8
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
21 mai 2007

Juste pour etre sur l event MouseDown de mon DataGridView je le recupere bien comme ca ?

public void OnMouseDown(object sender, MouseEventArgs e)
            {
            DataGridView.HitTestInfo hit = this.BBookGrid.HitTest(e.X, e.Y);
            if (hit.Type == DataGridViewHitTestType.Cell)
            {
                int rIndex = hit.RowIndex;                int cIndex hit.ColumnIndex; if (Cursor.Current Cursors.Hand);
            }
            }

et rIndex vaut 0 evidemment et je sais pas ou j ai encore rate le coche
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Avec un DataGridView, il y a l'event CellClick (ou CellContentClick selon le cas) qui va bien pour faire ca ;)
Il expose un parametre DataGridViewCellEventArgs qui te propose la propriété RowIndex et ColumnIndex.
Ainsi, il te suffit de faire dans la méthode associée a l'evenement

if(e.RowIndex != null)
{
   if(tonDataGridView.Columns[e.ColumnIndex].Name = "NomDeTaColonneAvecLaDate")
   {
      string date = tonDataGridView[e.ColumnIndex, e.RowIndex].Value.ToString();
   }
}

Mx
MVP C# 
Messages postés
8
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
21 mai 2007

Excuse moi mais je suis un peu perdue la

private void BBookGrid_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView.HitTestInfo hit = this.BBookGrid.HitTest(e.RowIndex, e.ColumnIndex);
            if (hit.Type == DataGridViewHitTestType.Cell)
            {
                rIndex = hit.RowIndex;
                cIndex = hit.ColumnIndex;
                dtDob = (DateTime)m_BBookTable.Rows[rIndex][DateCol];
                AveAge = dtDob.Date.ToString();
                button1.Text = AveAge;
            }      
           
            /*if(e.RowIndex < nbRows)
                {
                if(BBookGrid.Columns[e.ColumnIndex].Name=="DateCol")
                    {
                    AveAge = BBookGrid[e.ColumnIndex, e.RowIndex].Value.ToString();
                    }
                   }*/
        }   

Logiquement les deux methodes me donnent la meme chose non ?
Mais rien n est initialise, j ai beau cliquer avec ma petite souris, il se passe rien de chez rien ...
a ts les coups je redeclare une variable ou il faut pas mais je vois vraiment pas la, j ai teste plein de choses et ca change jamais rien
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Ma réponse était distincte de celle de Bidou.
Si tu utilises la version du CellClick, il ne faut pas mettre le premier bout de code ;)

Mx
MVP C#