L'application foreach dans gridview lignes ne semble pas fonctionner
J'ai un gridview et je suis la conversion gridview lignes à une table... Mais je ne peux pas en mesure d'obtenir la valeur d'une hiddenfield dans la cellule[0] à l'intérieur de la gridview....
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("EmpId", typeof(Int64)));
dt.Columns.Add(new DataColumn("FromDate", typeof(DateTime)));
dt.Columns.Add(new DataColumn("ToDate", typeof(DateTime)));
dt.Columns.Add(new DataColumn("DaysPresent", typeof(decimal)));
dt.Columns.Add(new DataColumn("OpeningAdvance", typeof(double)));
dt.Columns.Add(new DataColumn("AdvanceDeducted", typeof(double)));
dt.Columns.Add(new DataColumn("RemainingAdvance", typeof(double)));
dt.Columns.Add(new DataColumn("SalaryGiven", typeof(double)));
dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime)));
foreach (GridViewRow row in gridEmployee.Rows)
{
DataRow dr = dt.NewRow();
dr["EmpId"] = Convert.ToInt64(row.Cells[0].Text);
dr["FromDate"] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(fromdate[1].ToString()) + '/' + fromdate[0].ToString() + '/' + fromdate[2].ToString());
dr["ToDate"] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(todate[1].ToString()) + '/' + todate[0].ToString() + '/' + todate[2].ToString());
dr["DaysPresent"] = Convert.ToDecimal(row.Cells[4].Text);
dr["OpeningAdvance"] = Convert.ToDouble(row.Cells[5].Text);
dr["AdvanceDeducted"] = Convert.ToDouble(row.Cells[6].Text);
dr["RemainingAdvance"] = Convert.ToDouble(row.Cells[7].Text);
dr["SalaryGiven"] = Convert.ToDouble(row.Cells[8].Text);
dr["CreatedDate"] = Convert.ToDateTime(System.DateTime.Now.ToString());
dt.Rows.Add(dr);
}
J'ai obtenu l'erreur dans la ligne,
dr["EmpId"] = Convert.ToInt64(row.Cells[0].Text);
Input String was not in a correct format
Remarque:
Cells[0]
est un hiddenfield qui contient EmpId....
<asp:TemplateField >
<HeaderStyle Width="1%" />
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<asp:HiddenField ID="HiddenId" runat="server" value='<%#Eval("Emp_Id") %>' />
<asp:Label ID="LblHiddenId" runat="server" Text='<%#Eval("Emp_Id") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="1%" CssClass="GridCs" HorizontalAlign="Left" />
</asp:TemplateField>
Mon gridview,
le texte d'alt http://img109.imageshack.us/img109/6804/gridnewcopy.jpg
Pour
ok ... Mais je ne peux pas obtenir le champ caché... Mais quand j'ai utilisé une étiquette à la place j'ai eu la valeur
CreatedDate
, vous pouvez simplement écrire dr["CreatedDate"] = DateTime.Now
.ok ... Mais je ne peux pas obtenir le champ caché... Mais quand j'ai utilisé une étiquette à la place j'ai eu la valeur
OriginalL'auteur ACP | 2010-02-26
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'ajouter une condition à assurez-vous que vous n'êtes pas à l'analyse de l'en-tête et le pied de page:
EDIT: Travail de résultat (en laissant les autres car il peut également s'appliquer à des situations similaires
EDIT: étant donné que je n'ai pas de studio sur ce pour corriger moi-même
c'était juste une pâte à partir d'un événement en ligne. Permettez-moi de modifier à votre exemple.
ok man aller de l'avant ....
voir mon montage son d'un modèle de champ...
Essayez ((Étiquette)des cellules[0].FindControl("LblHiddenId")).Texte
OriginalL'auteur Joel Etherton
Cette erreur signifie que
cells[0].Text
ne contient pas un nombre.Vérifier la valeur de
row.Cells[0].Text
dans le débogueur.""
regarde ma photo modifiée...
OriginalL'auteur SLaks