进一步熟悉gridview控件的功能

来源:互联网 发布:歌曲原声消除软件 编辑:程序博客网 时间:2024/05/16 00:41

       前面已经知道了gridview的基本操作包括删除、编辑等,现在我想加入批量删除以及删除之前用户进行确认,添加数据等功能,这样的话就必须增加一列,加入模板域,在 模板项内加入复选框,对gridview控件修改如下:

 

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
            AutoGenerateColumns="False" DataSourceID="AccessDataSource1" DataKeyNames="stu_xh">
            <Columns>
            <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" Checked="false" Text='<%#DataBinder.Eval(Container.DataItem,"stu_id") %>' />
                    </ItemTemplate>
                    <HeaderTemplate>
                        &nbsp;<input id="CheckAll" type="checkbox" onclick="selectAll(this);" />本页全选
                    </HeaderTemplate>
                </asp:TemplateField>
                <asp:BoundField  DataField="stu_xh" HeaderText="stu_xh" SortExpression="stu_xh" />
                <asp:BoundField  DataField="stu_pwd" HeaderText="stu_pwd" SortExpression="stu_pwd" />
                <asp:BoundField DataField="stu_clsBDM" HeaderText="stu_clsBDM" SortExpression="stu_clsBDM" />
                <asp:BoundField DataField="stu_sfzh" HeaderText="stu_sfzh" SortExpression="stu_sfzh" />
                <asp:CommandField ShowDeleteButton="True" />
                <asp:BoundField DataField="stu_name" HeaderText="stu_name" SortExpression="stu_name" />
                <asp:CommandField ShowEditButton="True" />
            </Columns>
        </asp:GridView>

加入button删除确认:  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" OnClientClick="return confirm('确认要删除吗?');" />

加入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.aspx.cs里加入以下内容:

protected ArrayList SelectedItems
    {
        get
        {
            return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
        }
        set
        {
            ViewState["mySelectedItems"] = value;
        }
    }
    protected void GridView1_DataBinding(object sender, EventArgs e)
    {

        //在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
        CollectSelected();
    }


    protected void GridView1_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["stu_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.GridView1.Rows.Count; i++)
        {
            string id = this.GridView1.Rows[i].Cells[1].Text;
            CheckBox cb = this.GridView1.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 Button1_Click(object sender, EventArgs e)
    {
        CollectSelected();

       
        foreach (object tmp in this.SelectedItems)
        {
            string sqlstr;
            sqlstr= "delete from student where stu_xh='" + tmp.ToString()+"'";
            AccessDataSource1.DeleteCommand = sqlstr;
            //Response.Write(sqlstr);
           AccessDataSource1.Delete();
         
        }
      
       
            }

原创粉丝点击