无法从我的网格视图中获取数据

本文关键字:获取 数据 视图 网格 我的 | 更新日期: 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 已禁用。这完全取决于您在页面生命周期中执行此计算的位置/时间。