(oracle+c#)Gridview添加一列checkbox
.aspx页面加入javascript,用于控制全选
<script language="javascript" type="text/javascript">
function selectAll(obj) {
var theTable = obj.parentElement.parentElement.parentElement;
var i;
var j = obj.parentElement.cellIndex;
for (i = 0; i < theTable.rows.length; i++) {
var objCheckBox = theTable.rows[i].cells[j].firstChild;
if (objCheckBox.checked != null) objCheckBox.checked = obj.checked;
}
}
</script>
页面gridview做如下设置:OnDataBinding,OnRowDataBound
<asp:GridView ID="sub" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="sub_PageIndexChanging"
AllowPaging="True" PageSize="5" OnDataBinding="sub_DataBinding" OnRowDataBound="sub_RowDataBound"
OnRowDeleting="sub_RowDeleting" OnSelectedIndexChanging="sub_SelectedIndexChanging">
<Columns>
<asp:TemplateField HeaderText="PORDDS_ID">
<HeaderTemplate>
<input id="CheckAll" type="checkbox" onclick="selectAll(this);" />
</HeaderTemplate>
<%-- Text='<%#DataBinder.Eval(Container.DataItem,"pordds_id") %>'--%>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PORDDS_ID" HeaderText="PORDDS_ID" />
<asp:BoundField HeaderText="SEQ" DataField="SEQ" />
<asp:BoundField HeaderText="PART_ID" DataField="PART_ID" />
<asp:BoundField HeaderText="QTY" DataField="QTY" />
<asp:CommandField ShowDeleteButton="True" />
<asp:CommandField ShowSelectButton="True" />
</Columns>
</asp:GridView>
protected ArrayList SelectedItems
{
get
{
return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
}
set
{
ViewState["mySelectedItems"] = value;
}
}
绑定checkbox一列
protected void sub_RowDataBound(object sender, GridViewRowEventArgs e)
{
//这里的处理是为了回显之前选中的情况
if (e.Row.RowIndex > -1 && this.SelectedItems != null)//如果选中
{
DataRowView row = e.Row.DataItem as DataRowView;
CheckBox cb = e.Row.FindControl("CheckBox1") as CheckBox;
if (this.SelectedItems.Contains(row["pordds_id"].ToString()))
cb.Checked = true;
else
cb.Checked = false;
}
}
protected void CollectSelected()
{
ArrayList selectedItems = null;
if (this.SelectedItems == null)
selectedItems = new ArrayList();
else
selectedItems = this.SelectedItems;
for (int i = 0; i < this.sub.Rows.Count; i++)
{
string id = this.sub.Rows[i].Cells[1].Text;
CheckBox cb = this.sub.Rows[i].FindControl("CheckBox1") as CheckBox;
if (selectedItems.Contains(id) && !cb.Checked)
selectedItems.Remove(id);
if (!selectedItems.Contains(id) && cb.Checked)
selectedItems.Add(id);
}
this.SelectedItems = selectedItems;
}
绑定
protected void sub_DataBinding(object sender, EventArgs e)
{
CollectSelected();
}
删除选择的项目
protected void bt_del_select_Click(object sender, EventArgs e)
{
//最后,需要对选中项进行操作之前,不能忘了还要最后一次收集当前页的选中情况
string pordms_id = pordms.SelectedValue;
CollectSelected();
OracleConnection conn = new OracleConnection(connstr);
conn.Open();
ddsmsg.Text = "";
foreach (object tmp in this.SelectedItems)
{
string editstr = "delete from pur_pordds_test where pordds_id=" + tmp.ToString();
OracleCommand comm = new OracleCommand(editstr, conn);
comm.ExecuteNonQuery();
ddsmsg.Text = "删除成功!";
}
conn.Close();
init();
pordms.SelectedValue = pordms_id;
content();
bindsub();
}

浙公网安备 33010602011771号