首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GridView CheckBox 批量剔除

2012-09-01 
GridView CheckBox 批量删除gridview里面放了checkbox来实现批量删除,现在发现一个问题,就是我在第一页选

GridView CheckBox 批量删除
gridview里面放了checkbox来实现批量删除,现在发现一个问题,就是我在第一页选中一项,第二页选中一项,点击删除,只能删除第二页我选中的那个,第一页选中的没有删除。
删除按钮代码

C# code
protected void igb_delete_Click(object sender, ImageClickEventArgs e)        {            string IDlist = Common.PublicMethod.CheckCbx(this.GVdata, "chb_delete", "LabVisible");            if (IDlist.Trim() != "")            {                if (!Warningbll.DeleteList(IDlist))                {                    Response.Write("<script>alert('删除选中记录时发生错误!请重新登陆后重试!');</script>");                }                else                {                    GVdataDataBind();                }            }            else            {                this.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), " alert('请选择你要删除的项!'); ", true);                return;            }        }
C# code
//判断GridView里面被选中的ID        public static string CheckCbx(GridView GVData, string CheckBoxName, string LabID)        {            string str = "";            for (int i = 0; i < GVData.Rows.Count; i++)            {                GridViewRow row = GVData.Rows[i];                CheckBox Chk = (CheckBox)row.FindControl(CheckBoxName);                Label LabVis = (Label)row.FindControl(LabID);                if (Chk.Checked == true)                {                    if (str == "")                    {                        str = LabVis.Text.ToString();                    }                    else                    {                        str = str + "," + LabVis.Text.ToString();                    }                }            }            return str;        }
前台分页代码
HTML code
<asp:ImageButton ID="BtnFirst" runat="server" CommandName="First" ImageUrl="../../images/Button/First.jpg"                                        OnClick="PagerButtonClick" Style="height: 14px" />                                    <asp:ImageButton ID="BtnPre" runat="server" CommandName="Pre" ImageUrl="../../images/Button/Pre.jpg"                                        OnClick="PagerButtonClick" Style="height: 14px" />                                    <asp:ImageButton ID="BtnNext" runat="server" CommandName="Next" ImageUrl="../../images/Button/Next.jpg"                                        OnClick="PagerButtonClick" Style="width: 16px" />                                    <asp:ImageButton ID="BtnLast" runat="server" CommandName="Last" ImageUrl="../../images/Button/Last.jpg"                                        OnClick="PagerButtonClick" Style="height: 14px; width: 16px;" />
后台分页代码
C# code
string arg = ((ImageButton)sender).CommandName.ToString();            switch (arg)            {                case ("Next"):                    if (this.GVdata.PageIndex < (GVdata.PageCount - 1))                        GVdata.PageIndex++;                    break;                case ("Pre"):                    if (GVdata.PageIndex > 0)                        GVdata.PageIndex--;                    break;                case ("Last"):                    try                    {                        GVdata.PageIndex = (GVdata.PageCount - 1);                    }                    catch                    {                        GVdata.PageIndex = 0;                    }                    break;                default:                    //本页值                    GVdata.PageIndex = 0;                    break;            }            GVdataDataBind(); 



[解决办法]
嗯,只能获取当前页的控件,你想删除其他的,除非在页面切换事件中保存前一页选中的值。
[解决办法]
存ID
[解决办法]
当你在下一页触发的时候,遍历checkbox,如果选中了,那么可以统一放在变量里,记录起来,比如 Session

但是这么做无疑是复杂的,因为你要每次触发的时候都要取判断,然而用户还可能取消了选择,还要另作判断

其实这么删除也没什么不好.
[解决办法]
用一个List存放ID,然后统一删除
[解决办法]
把ID存在VIEWSTATE中
[解决办法]
由于页面已经刷新,之前选中的ID就丢失了,如果想要保留可以选择使用一些控件或者对象去保存它们,比如隐藏控件,比如viewstate或者list
[解决办法]
C# code
 private string SelectID    {        get        {            object obj = this.ViewState["SelectID"];            return ViewState["SelectID"] == null ? "" : obj.ToString();        }        set        {            ViewState["SelectID"] = value;        }    }SelectID+="你勾选的ID"+","; 

热点排行