无法从我的网格视图中获取数据
本文关键字:获取 数据 视图 网格 我的 | 更新日期: 2023-09-27 18:33:57
我在网格视图中获取特定单元格的数据时遇到问题我是这样做的:
double total = 0;
for (int i = 0; i < GridFactures.Rows.Count; i++)
total += Convert.ToDouble(GridFactures.Rows[i].Cells[6].Text.ToString());
lblTotalTTC.Text = "Montant total TTC : " + total;
有问题的列在我的 aspx 文件中声明:
<asp:TemplateField HeaderText="Montant TTC">
<ItemTemplate>
<asp:Label ID="lblMontantTTC" runat="server" Text='<%#Eval("MontantTTC") %>'/>
</ItemTemplate>
</asp:TemplateField>
我敢肯定,这始终是我要检查的第六列。我放了一个休息,GridFactures.Rows[i].Cells[6].Text.ToString()
总是包含"而已。。。感谢您的帮助
而不是这段代码:
for (int i = 0; i < GridFactures.Rows.Count; i++)
total += Convert.ToDouble(GridFactures.Rows[i].Cells[6].Text.ToString());
试试这个:
for (int i = 0; i < GridFactures.Rows.Count; i++)
{
Control ctrl = GridFactures.Rows[i].Cells[6].FindControl("lblMontantTTC");
if (ctrl != null)
{
Label lbl = ctrl as Label;
if (lbl != null)
{
total += Convert.ToDouble(lbl.Text);
}
}
}
如果我
没记错的话(你的标签是单元格中的第一个/唯一的控件)-
您需要在索引 0 处请求控件,或者通过 id 查找它,然后请求 .发短信
这样:
GridFactures.Rows[i].Cells[6].Controls[0].Text.ToString()
请记住它是一个从零开始的索引,所以 [6] 表示单元格 7
我知道
为什么。我自己也遇到了同样的情况。您需要检查空字段,如果是,请先将其转换为零。
total += (GridFactures.Rows[i].Cells[6].Text == "")? 0d : Convert.ToDouble(GridFactures.Rows[i].Cells[6].Text.ToString());
使用 LINQ 而不是循环怎么样?
double mySum =
GridFactures.Rows
.Cast<GridViewRows>()
.Sum(row =>
Double.Parse(((Label)row.FindControl("lblMontantTTC")).Text));
如果看不到任何值,则网格实际上尚未进行数据绑定,或者网格上的 ViewState 已禁用。这完全取决于您在页面生命周期中执行此计算的位置/时间。