Recuperer une date d une DataTable

Résolu
herissonne_4 Messages postés 8 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 21 mai 2007 - 17 oct. 2006 à 06:55
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 19 oct. 2006 à 08:57
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
17 oct. 2006 à 11:15
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# 
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
17 oct. 2006 à 08:37
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# 
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
17 oct. 2006 à 08:50
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-
0
herissonne_4 Messages postés 8 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 21 mai 2007
17 oct. 2006 à 10:46
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
herissonne_4 Messages postés 8 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 21 mai 2007
17 oct. 2006 à 11:47
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? 
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
17 oct. 2006 à 12:21
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-
0
herissonne_4 Messages postés 8 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 21 mai 2007
18 oct. 2006 à 03:15
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 oct. 2006 à 09:15
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# 
0
herissonne_4 Messages postés 8 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 21 mai 2007
19 oct. 2006 à 02:26
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
19 oct. 2006 à 08:57
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# 
0
Rejoignez-nous