在回发时丢失动态数据绑定
Lose dynamic data binding on postback
我有一个在运行时填充的网络数据网格(每次用户单击不同的按钮时,它都会加载不同的信息)
问题是在 selected row change
上,网格没有得到正确的行,因为它做了 post 返回,并删除了网格中的数据
Protected Sub grid_load(ByVal sender As Object, ByVal e As System.EventArgs) Handles WebDataGrid1.Load
If Not IsPostBack Then
Me.WebDataGrid1.DataSource = Membership.FindUsersByName("A%")
Me.WebDataGrid1.DataBind()
End If
End Sub
Protected Sub WebDataGrid1_Selection_RowSelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles WebDataGrid1.RowSelectionChanged
Dim thisrow = e.CurrentSelectedRows
End sub
thisrow
总是等于 Nothing
如何让 databind() 在 post 之前持续存在,以便我可以访问所选行中的信息?
<ig:WebDataGrid ID="WebDataGrid1" runat="server" AutoGenerateColumns="False" Width="750px" AltItemCssClass="AltRows" >
<Columns>
<ig:BoundDataField DataFieldName="UserName" DataType="System.String" Key="UserName">
<Header Text="User Name">
</Header>
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="Email" Key="Email">
<Header Text="Email">
</Header>
</ig:BoundDataField>
<ig:BoundCheckBoxField DataFieldName="IsApproved" Key="IsApproved" Width="75px">
<Header Text="Approved">
</Header>
</ig:BoundCheckBoxField>
<ig:BoundCheckBoxField DataFieldName="IsLockedOut" Key="IsLockedOut" Width="100px">
<Header Text="Locked Out">
</Header>
</ig:BoundCheckBoxField>
<ig:BoundDataField DataFieldName="LastLoginDate" Key="LastLoginDate">
<Header Text="LastLoginDate">
</Header>
</ig:BoundDataField>
</Columns>
<Behaviors>
<ig:Selection CellClickAction="Row" CellSelectType="None" RowSelectType="Single">
<SelectionClientEvents RowSelectionChanged="WebDataGrid1_Selection_RowSelectionChanged" />
<AutoPostBackFlags RowSelectionChanged="True" />
</ig:Selection>
</Behaviors>
</ig:WebDataGrid>
将 EnableDataViewState
设置为 true,然后 WebDataGrid
数据将被序列化为 ViewState
并将持续到 PostBack
而无需重新绑定网格。
<ig:WebDataGrid ID="WebDataGrid1"
runat="server"
AutoGenerateColumns="False"
Width="750px"
AltItemCssClass="AltRows"
EnableDataViewState="True">
...
</ig:WebDataGrid>
我有一个在运行时填充的网络数据网格(每次用户单击不同的按钮时,它都会加载不同的信息)
问题是在 selected row change
上,网格没有得到正确的行,因为它做了 post 返回,并删除了网格中的数据
Protected Sub grid_load(ByVal sender As Object, ByVal e As System.EventArgs) Handles WebDataGrid1.Load
If Not IsPostBack Then
Me.WebDataGrid1.DataSource = Membership.FindUsersByName("A%")
Me.WebDataGrid1.DataBind()
End If
End Sub
Protected Sub WebDataGrid1_Selection_RowSelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles WebDataGrid1.RowSelectionChanged
Dim thisrow = e.CurrentSelectedRows
End sub
thisrow
总是等于 Nothing
如何让 databind() 在 post 之前持续存在,以便我可以访问所选行中的信息?
<ig:WebDataGrid ID="WebDataGrid1" runat="server" AutoGenerateColumns="False" Width="750px" AltItemCssClass="AltRows" >
<Columns>
<ig:BoundDataField DataFieldName="UserName" DataType="System.String" Key="UserName">
<Header Text="User Name">
</Header>
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="Email" Key="Email">
<Header Text="Email">
</Header>
</ig:BoundDataField>
<ig:BoundCheckBoxField DataFieldName="IsApproved" Key="IsApproved" Width="75px">
<Header Text="Approved">
</Header>
</ig:BoundCheckBoxField>
<ig:BoundCheckBoxField DataFieldName="IsLockedOut" Key="IsLockedOut" Width="100px">
<Header Text="Locked Out">
</Header>
</ig:BoundCheckBoxField>
<ig:BoundDataField DataFieldName="LastLoginDate" Key="LastLoginDate">
<Header Text="LastLoginDate">
</Header>
</ig:BoundDataField>
</Columns>
<Behaviors>
<ig:Selection CellClickAction="Row" CellSelectType="None" RowSelectType="Single">
<SelectionClientEvents RowSelectionChanged="WebDataGrid1_Selection_RowSelectionChanged" />
<AutoPostBackFlags RowSelectionChanged="True" />
</ig:Selection>
</Behaviors>
</ig:WebDataGrid>
将 EnableDataViewState
设置为 true,然后 WebDataGrid
数据将被序列化为 ViewState
并将持续到 PostBack
而无需重新绑定网格。
<ig:WebDataGrid ID="WebDataGrid1"
runat="server"
AutoGenerateColumns="False"
Width="750px"
AltItemCssClass="AltRows"
EnableDataViewState="True">
...
</ig:WebDataGrid>