(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();
}

 

posted @ 2010-01-13 13:09  PROS  阅读(1416)  评论(0)    收藏  举报