Protected Sub grdView_PageIndexChanging(sender As Object, e As GridViewPageEventArgs) Handles grdView.PageIndexChanging
grdView.SelectedIndex = -1
grdView.PageIndex = e.NewPageIndex
' To persist DDL values at paging using datatable
Dim Data As New DataTable
Data.Columns.Add("RowIndex", Type.GetType("System.Int32"))
Data.Columns.Add("SelectedValue", Type.GetType("System.String"))
For Each Row As GridViewRow In grdView.Rows
Dim ddl As DropDownList = DirectCast(Row.FindControl("ddlSample"), ComboBox)
If ddl.SelectedValue <> "" Then
Dim Rows As DataRow = Data.NewRow
Rows("RowIndex") = Row.RowIndex
Rows("SelectedValue") = ddl.SelectedValue
Data.Rows.Add(Rows)
End If
Next
' Passing the datatable to session
Session("MYDataTable") = Data
grdView.DataSource = grdDataSource
grdView.DataBind()
If Session("MYDataTable") IsNot Nothing AndAlso Session("MYDataTable") IsNot DBNull.Value Then
Data = CType(Session("MYDataTable"), DataTable)
For Each row In Data.Rows
If e.NewPageIndex = row("PageIndex") Then
Dim ddl As DropDownList = DirectCast(grdView.Rows(row("RowIndex")).FindControl("ddlSample"), DropDownList)
ddl.SelectedValue = row("SelectedValue")
End If
Next
End If
上面的代码是我用于持久化 DropDownList 值的代码,但它没有按预期工作。
在我的GridView我有两列
第一列的详细信息:我有员工姓名列表
第二列的详细信息:它的每一行都有一个下拉列表,其中包含许多项目。
在我的网格中,我有近 100 个值,所以我已经设置allowPaging="true"
并设置了pagesize="10".
我面临的问题是
- 第 1 步: 我在第 0 页的 rowindex 2 的下拉列表中选择一个值
- 第 2 步:将页面更改为 5,根据我的代码,我在第 0 页为 rowindex 2 选择的值也出现在第 5 页的 rowindex 2 中。
但我想要的是
- 第 1 步: 我在第 0 页的 rowindex 2 的下拉列表中选择一个值
- 第 2 步:将页面更改为 5,不应选择任何值,因为我没有在其中选择任何值。
- 第 3 步:我再次返回第 0 页,Rowindex 2 中 ddl 的值应该具有先前选择的值。
编辑
如此处所述,我正在保留字典中的值..!!
Dim ddlValues As New Dictionary(Of String, Integer)
For rowIndex As Integer = 0 To grdOnlineVoter.Rows.Count
Dim ddl As ComboBox = grdView.Rows(rowIndex).FindControl("ddlsample")
If ddl IsNot Nothing Then
If ddl.SelectedIndex > 0 Then
Dim ddlIndex As Integer = rowIndex
ddlValues.Add(ddl.SelectedValue, ddlIndex)
End If
End If
Next
但我无法将其重新填充到下拉列表