执行当前 Web 请求.对象不能从 DBNull 强制转换为其他类型



请不要投反对票。 我是这个网站的新手。我尝试了自己,但反复发生相同的错误。

protected void gvDepPayment_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Label lbl = (Label)e.Row.FindControl("lblDeptName");
            DataTable dT = (DataTable)ViewState["DataBounded"];
            DataRow[] drows = dT.Select("DepartmentName = '" + lbl.Text + "'");
            int Count = 0;
            foreach (DataRow item in drows)
            {
                Count += Convert.ToInt32(item["PaidAmount"]);
            }
            Label lblPaidAmount = (Label)e.Row.FindControl("lblPaidAmount");
            lblPaidAmount.Text = Count.ToString();
        }
    }
<asp:GridView ID="gvDepPayment" runat="server" AutoGenerateColumns="false" 
                                    OnRowDataBound="gvDepPayment_RowDataBound">
                                    <Columns>
                                        <asp:TemplateField HeaderText="Department Name">
                                            <ItemTemplate>
                                                <asp:Label ID="lblDeptName" runat="server" Text='<%#Eval("DepartmentName") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Collection">
                                            <ItemTemplate>
                                                <asp:Label ID="lblPaidAmount" runat="server" Text="0"></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                </asp:GridView>

我想找到付款列表并将其显示在网格视图中,例如部门明智

此错误消息是由于您在名为 PaidAmount 的列中读取 DataRow 的内容引起的,您的查询返回的行集中可能存在一些 null 值。在此方案中,可以将 DataRow 类的 IsNull 方法与条件运算符一起使用。对于DBNull.Value,您希望将计数加零。

Count += item.IsNull("PaidAmount") ? 0 : Convert.ToInt32(item["PaidAmount"]);

最新更新