データバインドされたグリッドビューに行グループ化行を追加しようとしています。最初のレスポンスではうまく動作しますが、ポストバックで "viewstateを読み込めませんでした"というエラーが出ました。ビューステートエラーを発生させずにデータバインドされたグリッドビューに行を追加するにはどうすればよいですか?
GridViewのRowDataBoundイベントのコードがあります:
Private Sub AddGroupingRow(ByRef eRow As GridViewRow, ByVal Css As String, ByVal ColSpan As Integer, ByVal Txt As String)
Dim cell As New TableCell()
cell.ColumnSpan = ColSpan
cell.CssClass = "Spacing FieldCell"
cell.Text = Txt
Dim row As New GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal)
row.CssClass = Css
row.Cells.Add(cell)
Dim tbl As Table
tbl = eRow.Parent
tbl.Rows.AddAt(eRow.RowIndex + 1, row)
End Sub
Private Prev_Client_ID As Integer = -1
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 dr As Data.DataRowView = TryCast(e.Row.DataItem, Data.DataRowView)
If dr IsNot Nothing AndAlso dr.Row.RowState <> Data.DataRowState.Added Then
Dim Client_ID As Integer = dr.Item("Client_ID")
If Client_ID <> Prev_Client_ID Then AddGroupingRow(e.Row, "Group", 8, dr.Item("Client_Name"))
Prev_Client_ID = Client_ID
End If
End If
End Sub
私はそれがデータソースにグループ化行を作成する方が簡単だということを知っているが、このコードから派生する、私は他のグリッドにいくつかのベースを作成したいです現場で。
お時間をいただきありがとうございました。私はコントロールをdinamically作成するために使用されています。私は既にASP.NET Page Life Cycleを尊重しながら、ディナミカルにコントロールを作成するために使用されています。実際に何らかの問題が発生すると思いました。 問題は次のとおりです。私はInitフェーズでGridViewをバインドできず、何らかの回避策について考えているかもしれません。ポストバック時にInitで行を再作成する必要があるかもしれません。 ? 私は、データソース、または言及されたものを混乱させることを考えました。どれどれ。ありがとう! –