我正在尝试向页脚添加更多行,但我的代码一直出错。我已经在这方面工作了几天。请帮忙!
Partial Class Capacity_Plan_Default
Inherits System.Web.UI.Page
Private Property EngTotalQuoteHours As Decimal
Private Property EngTotalUsedHours As Decimal
Private Property column1 As Decimal
Private Property column2 As Decimal
Private Property column3 As Decimal
Private Property CNC_5Axis As Decimal
Private Property CNC_Large As Decimal
Private Property CNC_Small As Decimal
Private Property EDM_Large As Decimal
Private Property EDM_Small As Decimal
Private Property EDM_Trodes As Decimal
Private Property Assy As Decimal
Private Property Polish As Decimal
Private Property Sample As Decimal
Private Property orginalDatatable As Data.DataTable
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim hourRow As GridViewRow = e.Row
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Eng_Quoted_Hrs")) Then
EngTotalQuoteHours += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Eng_Quoted_Hrs"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Eng_Used_Hrs")) Then
EngTotalUsedHours += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Eng_Used_Hrs"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "column1")) Then
column1 += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "column1"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "column2")) Then
column2 += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "column2"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "column3")) Then
column3 += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "column3"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "CNC_5Axis")) Then
CNC_5Axis += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "CNC_5Axis"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "CNC_Large")) Then
CNC_Large += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "CNC_Large"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "CNC_Small")) Then
CNC_Small += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "CNC_Small"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "EDM_Large")) Then
EDM_Large += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "EDM_Large"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "EDM_Small")) Then
EDM_Small += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "EDM_Small"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "EDM_Trodes")) Then
EDM_Trodes += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "EDM_Trodes"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Assy")) Then
Assy += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Assy"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Polish")) Then
Polish += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Polish"))
End If
If Not IsDBNull(DataBinder.Eval(e.Row.DataItem, "Sample")) Then
Sample += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Sample"))
End If
ElseIf e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).Text = "Total Hours:"
e.Row.Cells(5).Text = EngTotalQuoteHours.ToString
e.Row.Cells(6).Text = EngTotalUsedHours.ToString
e.Row.Cells(7).Text = column1.ToString
e.Row.Cells(8).Text = column2.ToString
e.Row.Cells(9).Text = column3.ToString
e.Row.Cells(10).Text = CNC_5Axis.ToString
e.Row.Cells(11).Text = CNC_Large.ToString
e.Row.Cells(12).Text = CNC_Small.ToString
e.Row.Cells(13).Text = EDM_Large.ToString
e.Row.Cells(14).Text = EDM_Small.ToString
e.Row.Cells(15).Text = EDM_Trodes.ToString
e.Row.Cells(16).Text = Assy.ToString
e.Row.Cells(17).Text = Polish.ToString
e.Row.Cells(18).Text = Sample.ToString
Dim GridView1 As GridView = CType(sender, GridView)
''gets the current footer row to clone
Dim footer As GridViewRow = GridView1.FooterRow
Dim numCells = footer.Cells.Count
Dim newRow As New GridViewRow(footer.RowIndex + 1, -1, footer.RowType, footer.RowState)
''have to add in the right number of cells
''this also copies any styles over from the original footer
For i As Integer = 0 To numCells - 1
Dim emptyCell As New TableCell
emptyCell.ApplyStyle(GridView1.Columns(i).ItemStyle)
newRow.Cells.Add(emptyCell)
Next
newRow.Cells(5).Text = (EngTotalQuoteHours / 46).ToString
''add new row to the gridview table, at the very bottom
CType(GridView1.Controls(0), Table).Rows.Add(newRow)
End If
End Sub
End Class
我得到的错误如下。
对象引用未设置为对象的实例。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
来源错误:
第90行:''获取要克隆的当前页脚行 第91行:Dim footer As GridViewRow = GridView1.FooterRow 第92行:Dim numCells = footer.Cells.Count 第93行: 第94行:Dim newRow As New GridViewRow(footer.RowIndex + 1,-1,footer.RowType,footer.RowState)
答案 0 :(得分:0)
我认为在这种情况下GridView1.FooterRow为null而不是
Dim footer As GridViewRow = GridView1.FooterRow
使用
Dim footer As GridViewRow = e.Row