Recuperer une date d une DataTable [Résolu]

herissonne_4 8 Messages postés mardi 17 octobre 2006Date d'inscription 21 mai 2007 Dernière intervention - 17 oct. 2006 à 06:55 - Dernière réponse : MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

10 réponses

MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 17 oct. 2006 à 11:15
+3
Utile
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# 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 17 oct. 2006 à 08:37
0
Utile
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# 
Commenter la réponse de MorpionMx
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 17 oct. 2006 à 08:50
0
Utile
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-
Commenter la réponse de cs_Bidou
herissonne_4 8 Messages postés mardi 17 octobre 2006Date d'inscription 21 mai 2007 Dernière intervention - 17 oct. 2006 à 10:46
0
Utile
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
Commenter la réponse de herissonne_4
herissonne_4 8 Messages postés mardi 17 octobre 2006Date d'inscription 21 mai 2007 Dernière intervention - 17 oct. 2006 à 11:47
0
Utile
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? 
Commenter la réponse de herissonne_4
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 17 oct. 2006 à 12:21
0
Utile
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-
Commenter la réponse de cs_Bidou
herissonne_4 8 Messages postés mardi 17 octobre 2006Date d'inscription 21 mai 2007 Dernière intervention - 18 oct. 2006 à 03:15
0
Utile
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
Commenter la réponse de herissonne_4
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 18 oct. 2006 à 09:15
0
Utile
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# 
Commenter la réponse de MorpionMx
herissonne_4 8 Messages postés mardi 17 octobre 2006Date d'inscription 21 mai 2007 Dernière intervention - 19 oct. 2006 à 02:26
0
Utile
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
Commenter la réponse de herissonne_4
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 19 oct. 2006 à 08:57
0
Utile
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# 
Commenter la réponse de MorpionMx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.