请不要投反对票。 我是这个网站的新手。我尝试了自己,但反复发生相同的错误。
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"]);