У меня есть Gridview, что я создаю динамический нижний колонтитул, подключенный к событию RowDataBound.Обратитесь к значению Footer в GridView, созданном динамически ASP VB
Однако есть вероятность 50/50, что 3 столбца не будут иметь данных.
Я хочу иметь возможность динамически скрывать столбцы без данных, если это возможно.
Я попытался сделать это в событии RowDatabound, проверив, является ли значение = 0, но это не работает, потому что я думаю, что событие вызывается досрочно?
Есть ли способ ссылаться на значения в строке нижнего колонтитула после того, как ВСЕ данные были связаны?
В идеале в VB
`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
TotalOffered += DataBinder.Eval(e.Row.DataItem, "Offered")
TotalHandled += DataBinder.Eval(e.Row.DataItem, "Handled")
TotalHandled30 += DataBinder.Eval(e.Row.DataItem, "Handled30")
TotalHandlingTime += (DataBinder.Eval(e.Row.DataItem, "AHT") * DataBinder.Eval(e.Row.DataItem, "Handled"))
TotalTalkTime += ((DataBinder.Eval(e.Row.DataItem, "AHT") * DataBinder.Eval(e.Row.DataItem, "Talk"))) * DataBinder.Eval(e.Row.DataItem, "Handled")
TotalHoldTime += ((DataBinder.Eval(e.Row.DataItem, "AHT") * DataBinder.Eval(e.Row.DataItem, "Hold"))) * DataBinder.Eval(e.Row.DataItem, "Handled")
TotalWrapTime += ((DataBinder.Eval(e.Row.DataItem, "AHT") * DataBinder.Eval(e.Row.DataItem, "Work"))) * DataBinder.Eval(e.Row.DataItem, "Handled")
' If there is agent data calculate a running total
If IsDBNull(DataBinder.Eval(e.Row.DataItem, "Pri_Agent_Sign_in")) Then
GridView1.Columns(0).Visible = False
Else
TotalSignedin += DataBinder.Eval(e.Row.DataItem, "Pri_Agent_Sign_in")
TotalAvail += DataBinder.Eval(e.Row.DataItem, "Pri_Agent_Sign_in") * DataBinder.Eval(e.Row.DataItem, "Avail_Time")
TotalIdle += DataBinder.Eval(e.Row.DataItem, "Pri_Agent_Sign_in") * DataBinder.Eval(e.Row.DataItem, "Unavail_Time")
End If
' If there is forecast data calculate a running total
If IsDBNull(DataBinder.Eval(e.Row.DataItem, "ORG_FOR_VOL")) Then
Else
TotalForecastVolume += DataBinder.Eval(e.Row.DataItem, "ORG_FOR_VOL")
TotalForecastAHT += DataBinder.Eval(e.Row.DataItem, "ORG_FOR_VOL") * DataBinder.Eval(e.Row.DataItem, "ORG_FOR_AHT")
End If
ElseIf e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).Text = "Totals : "
e.Row.Cells(1).Text = TotalOffered.ToString
e.Row.Cells(2).Text = TotalHandled.ToString
e.Row.Cells(3).Text = TotalHandled30.ToString
e.Row.Cells(4).Text = (TotalHandled/TotalOffered).ToString("#0%")
e.Row.Cells(5).Text = (TotalHandled30/TotalHandled).ToString("#0%")
e.Row.Cells(6).Text = (TotalHandlingTime/TotalHandled).ToString("N0")
e.Row.Cells(7).Text = (TotalTalkTime/TotalHandlingTime).ToString("#0%")
e.Row.Cells(8).Text = (TotalHoldTime/TotalHandlingTime).ToString("#0%")
e.Row.Cells(9).Text = (TotalWrapTime/TotalHandlingTime).ToString("#0%")
' If agent data then add total data to footer
If TotalSignedin = 0 Then
Else
e.Row.Cells(11).Text = (TotalAvail/TotalSignedin).ToString("#0%")
e.Row.Cells(12).Text = (TotalIdle/TotalSignedin).ToString("#0%")
e.Row.Cells(12).HorizontalAlign = HorizontalAlign.Center
End If
If TotalForecastVolume = 0 Then
Else
e.Row.Cells(13).Text = TotalForecastVolume.ToString
e.Row.Cells(14).Text = (TotalForecastAHT/TotalForecastVolume).ToString("F0")
End If
End If`
Возможно, вам будет полезно включить код. – Bryan
Также вы используете .net? или просто asp? – Bryan
Да. разместите свой код. Я уверен, что смогу помочь .... – Eric