【发布时间】:2014-10-11 10:41:12
【问题描述】:
我有一个gridview,每行数据都有一个复选框。
当复选框被选中或取消选中时,我需要在我的数据库中更新一个位标志。
我正在尝试使用 OnCheckedChanged 事件。
它确实会触发,但是我收到一个与 ID 有关的空错误。
我的问题是,我不太确定如何将所需的 ID 获取到 OnCheckedChanged 事件代码。
我需要此 ID 来更新数据库中的相应行。
我在 StackOverflow 上发现了一些相关问题,但提供的答案都没有真正帮助我。
谢谢!
我的gridview代码:
<asp:GridView ID="gvlisting" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Item Is Ready">
<ItemTemplate>
<asp:CheckBox ID="isReady" runat="server" AutoPostBack="true" OnCheckedChanged="isReady_CheckedChanged" Checked='<%#isReady(CInt(Eval("isReady")))%>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Item Name">
<ItemTemplate>
<asp:Label ID="itemName" runat="server" Text='<%#cleanString(Eval("itemName").ToString())%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后面的代码:
Public Sub isReady_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim box As CheckBox = DirectCast(sender, CheckBox)
If box.Checked = True Then
'custom code for executing an SQL UPDATE statement
db.ExecuteNonQuery(AddIsreadyFlag, New SqlParameter("@itemID", Me.ID))
Else
db.ExecuteNonQuery(RemoveIsreadyFlag, New SqlParameter("@itemID", Me.ID))
End If
End Sub
【问题讨论】:
-
您是否尝试过使用数据键名??
-
你需要获取当前行的DataItem
-
@Robert 我同意,您需要获取保存您 ID 的 DataItem/Row,然后将其设置为某种变量。
-
@Robert:
DataItem在回发时为空/无。