我很难调试这个奇怪的问题(也许这很奇怪,因为我是第一次做 VB.NET 的 PHP 人)
我有一个像下面这样的 Gridview
<asp:GridView ID="MyGridViewID" runat="server" AutoGenerateColumns="False"
DataKeyNames="employee_id" DataSourceID="all_employee" >
<Columns>
<asp:BoundField DataField="employee_id" HeaderText="employee_id"
ReadOnly="True" SortExpression="employee_id" Visible="False" />
<asp:BoundField DataField="employee_name" HeaderText="employee_name"
SortExpression="employee_name" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<br />
<asp:RadioButtonList ID="RadioPermission" runat="server">
<asp:ListItem Value="1">Yes</asp:ListItem>
<asp:ListItem Selected="True" Value="0">No</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowSelectButton="True" ItemStyle-CssClass="visibility" ShowHeader="false"
HeaderStyle-CssClass="visibility" >
<HeaderStyle CssClass="visibility" />
<ItemStyle CssClass="visibility" />
</asp:CommandField>
</Columns>
</asp:GridView>
然后我有一个将信息保存到数据库的按钮,它与保存部分配合得很好
For Each row As GridViewRow In MyGridViewID.Rows
Dim radio_cp As RadioButtonList = CType(row.Cells(7).FindControl("RadioPermission"), RadioButtonList)
If radio_cp.SelectedValue = 1 Then
' BLOCK A: saving to the db if the radio is YES
Else
' BLOCK B: deleting from the db if the radio is NO.
End If
Next
我的问题:
当我第一次加载 Gridview 时将所有单选设置为 NO,我为某些单选选择 YES 并单击保存,它运行良好。
然后刷新 Gridview 并在这些收音机中正确反映更改。
然后我为当前设置为 YES 的收音机选择 NO 并再次单击 Save => radio_cp.SelectedValue 始终返回 1。
Checkbox 和 Radio 的问题是一样的:我无法检测到用户何时取消选中 checkbox/radio。我认为gridview在某个地方保存了那些checkbox/radio的状态,但我不知道
我尝试了 EnableViewState 没有运气,谷歌搜索了很多也没有运气。
我尝试了 OnCheckedChecked 事件,但没有成功。
我可能会在这里遗漏一些东西,你能帮忙吗?
谢谢你所有的时间!