日期:2014-05-17  浏览次数:20440 次

gridview选择删除的一个问题
我在gridview 里面放了一个checkbox,外面放了一个删除的Button, 我想通过选中的行,来选择删除,但要求删除前有提示,
代码:
C# code

   protected void ButtonDelAll_Click(object sender, EventArgs e)
        {

            for (int i = 0; i <= GVInternshipNews.Rows.Count - 1; i++)
            {
                CheckBox cb = (CheckBox)GVInternshipNews.Rows[i].FindControl("CheckBoxSelect");
                if (cb.Checked)
                {
                    this.ButtonDelAll.Attributes.Add("OnClick", "return confirm('确定要删除这条记录吗?');");
                    string guid = this.GVInternshipNews.DataKeys[i]["Guid"].ToString();
                    dalIntership.DeleteInternshipGuid(guid);
                }
            }
            GridviewBind();

        }



问题是,我第一次选择一个,点删除按钮,它没有提示语弹出,只有等我第二次删除才会有提示?
请问 这是为什么啊,怎么解决?

------解决方案--------------------
因为你在ButtonDelAll_Click事件里加这句话this.ButtonDelAll.Attributes.Add("OnClick", "return confirm('确定要删除这条记录吗?');");
那么只有在点击ButtonDelAll之后,ButtonDelAll才会有这个属性,所以下一次点击才能弹出提示,在if (!IsPostBack)里加这句话,那你点ButtonDelAll之前,它就有了这个属性。


------解决方案--------------------
还是我来贴代码吧,保证能用
页面上要有一个全选复选框,不然自己修改相应代码吧
JScript code

//===============================================
//    判断checkbox是否中数据
//    【输入参数】删除按钮,一条都没有选择点删除的提示语句,删除确认提示,全选复选框
//    【返回值】无
//    【作成者】
//    【概要】 判断checkbox是否中数据
//===============================================
function IsCheckSelect(btnDelete,selectMsg,deleteMsg,chkSelectAll)
{            
    //获得form中所有的子控件

    chkElmements = btnDelete.form.elements;

    for( i=0 ; i < chkElmements.length ; i++ )
    {
        //如果控件类型是checkbox,且不是全选按钮,且为选中状态

        if( chkElmements[i].type == "checkbox"  && chkElmements[i].checked == true 
        && chkElmements[i].id != chkSelectAll )
        {                         
                return confirm(deleteMsg);                       
        }
    }

    //如果没有选中任何一条数据,提示信息,并不执行后台代码

    window.alert(selectMsg);
    
    return false; 
}