我正在尝试删除带有删除按钮(Deletebtn)的复选框onClick Delete Selected 我在datagrid表中有两个复选框标题chkAll和item chkRow。
Sub DeleteSelected(sender as object, e as System.EventArgs)
Dim item As DataGridItem
Dim SQLRemoveItem As String
For Each item In OrderForm.Items
Dim selection As CheckBox = _
DirectCast(item.Cells(12).FindControl("chkRow"), CheckBox)
If selection IsNot Nothing
' AndAlso selection.Checked then
Dim SQLCheck As String = "select id, isbn from order_detail where ordernumber='{0}' and isbn ='{1}'"
Dim Check As DataTable = Database.SelectRows(String.Format(SQLCheck, OrderNumber.Text, Item.cells(3).Text))
SQLRemoveItem = "Delete from order_detail where id = '{0}'"
Database.InsertRecord(String.Format(SQLRemoveItem, Check.Rows(0)("id")))
End if
Next Item
BindOrderForm() 'Rebind data after delete
End Sub
<script type="text/javascript">
$("[id*=chkAll]").live("click", function () {
var chkAll = $(this);
var grid = $(this).closest("table");
$("input[type=checkbox]", grid).each(function () {
if (chkAll.is(":checked")) {
$(this).attr("checked", "checked");
$("td", $(this).closest("tr")).addClass("selected");
} else {
$(this).removeAttr("checked");
$("td", $(this).closest("tr")).removeClass("selected");
}
});
});
$("[id*=chkRow]").live("click", function () {
var grid = $(this).closest("table");
var chkAll = $("[id*=chkAll]", grid);
if (!$(this).is(":checked")) {
$("td", $(this).closest("tr")).removeClass("selected");
chkAll.removeAttr("checked");
} else {
$("td", $(this).closest("tr")).addClass("selected");
if ($("[id*=chkRow]", grid).length == $("[id*=chkRow]:checked", grid).length) {
chkAll.attr("checked", "checked");
}
}
});
</script>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:CheckBox id="chkAll" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkRow" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
我的问题是,当我尝试搜索chkRow并删除所选的chkrow框时。它删除了一切!
如果我应该添加选择。检查它什么都不做,不知道我哪里出错了。 求救!
答案 0 :(得分:0)
您的代码将删除所有内容,因为您遍历所有行,检查是否存在复选框,然后删除该行。由于您有一个复选框列,因此始终会找到该复选框。我可以看到您的注释行,以便了解您的尝试。
我认为你应该这样做:
调试代码并获取item.Cells(12)的值。我相信它应该设置为“真”或“假”。您不必为了获取值而对单元格进行类型转换。我敢打赌,item.Cells(12).ToString()就足以得到它了。
然后创建一个恰当的if语句:
If item.Cells(12).ToString() = "true"