2010-12-09 66 views
0

Problème rencontré lors de la tentative de conversion de la valeur de gridviewrow.cells en int32 à l'aide de C# .net.Veuillez prendre en compte le codage suivant.comment classer la valeur de gridviewrow.cells [i] valeur dans int32?

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("studentid",typeof(Int32))); 
dt.Columns.Add(new DataColumn("Name",typeof(string))); 
foreach (GridViewRow row in GridView1.Rows) 
{ 
    DataRow dr; 
    dr = dt.NewRow(); 
    CheckBox cb = (CheckBox)row.FindControl("Chkgridselect"); 
    if (cb.Checked) 
    { 
     //Error occurs in the following line when i try to typecast 
     dr["studentid"] =Convert.ToInt32(row.Cells[1]); 
     dr["Name"] = row.Cells[2]; 
     dt.Rows.Add(dr); 
    } 
} 
+1

Veuillez inclure votre code et expliquer en quoi il échoue. – David

+0

Peut-être que vous n'avez pas un Int32 dans l'une des cellules! –

+1

Ne devriez-vous pas convertir la première cellule, celle avec l'index 0? Vous êtes en train de convertir la deuxième colonne en int, autant que je peux dire à partir du code. –

Répondre

1

Ajout d'un code aiderait, mais je vais prendre un coup de couteau et dire essayer:

int myVal = Int32.Parse(GridViewRow.Cells[i].Text); 
+0

merci .... votre code fonctionne ... mais pourquoi ça ne marche pas quand j'utilise ToString() au lieu de texte? – Prem

+0

@Prem - 'Text' est une propriété du type GridViewCell qui vous donne la valeur du texte affiché dans la cellule. L'appel de la méthode 'ToString()' est différent; cette méthode est héritée de 'Object'. Si la classe n'a pas outrepassé cette méthode, le comportement par défaut est de renvoyer le nom complet de la classe, donc dans ce cas vous obtiendrez quelque chose comme 'System.Web.UI.GridViewCell', et quelques informations de version. –

1
int result; 

result = int.Parse(value); 

// OR 

result = Convert.Int32(value); 
+0

Devrait être 'Convert.ToInt32 (valeur)' –

2

Juste un coup de poignard dans le noir, sans plus d'informations. Mais essayez:

int myValue; 
if (!int.TryParse(myGridViewRow.Cells[i].Text, out myValue) 
//do something, your value is not an int 
0

DataGridViewCell a une propriété Value.

.... 
dr["studentid"] = Convert.ToInt32(row.Cells[1].Value); 
....