利用回调实现GridView的批量删除并提示删除的记录数

     在一个项目中,需要实现GridView的中数据的批量删除,还是在删除前确认删除记录的数量.

      以下的方法,页面在不生产PostBack的情况下取到所需的数据.

ASPX主要代码和脚本:

        function GetLevelHtmlClient(text)
        {
            var pos1=text.lastIndexOf(',')+1;
            var pos2=text.length;
            var count=text.substring(pos1,pos2);
            if(confirm('你确定要删除 '+count+' 条留言吗?'))
            {
                PageMethods.DeleteData(text,onSuccessCheck);
                postBackHiddenField('<%=HiddenField_list.ClientID %>');
            }
            else return;
        }

         function postBackHiddenField(hiddenFieldID) {
            var hiddenField = $get(hiddenFieldID);
            if (hiddenField) {
                hiddenField.value = (new Date()).getTime();
                __doPostBack(hiddenFieldID,'');
            }
         }

                <asp:UpdatePanel ID="UpdatePanel_list" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False">
                    <ContentTemplate>
                        <div align="center">
                            <center>
                                <asp:DataGrid ID="PolicyDataGrid" runat="server" CssClass="GridList" Width="100%"
                                    AutoGenerateColumns="False" CellPadding="2" DataKeyField="id">
                                    <ItemStyle HorizontalAlign="Center" CssClass="GridList_Item"></ItemStyle>
                                    <HeaderStyle Font-Bold="True" HorizontalAlign="Center" CssClass="GridList_Header"></HeaderStyle>
                                    <Columns>
                                        <asp:TemplateColumn HeaderText="选择">
                                            <HeaderStyle Width="5%" />
                                            <ItemTemplate>
                                                <asp:CheckBox ID="Cbx1" runat="server" Checked="false" AutoPostBack="true" />
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                        <asp:TemplateColumn Visible="false">
                                            <ItemTemplate>
                                                <%# DataBinder.Eval(Container.DataItem,"id") %>
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                        <asp:TemplateColumn HeaderText="标题">
                                            <HeaderStyle Width="35%"></HeaderStyle>
                                            <ItemTemplate>
                                                <asp:HyperLink ID="Hyperlink1" CssClass="a03" runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "id","MessageBoard_Edit.aspx?SubWebItemNo="+Request["SubWebItemNo"].ToString()+"&id={0}&action=1") %>'
                                                    Text='<%# DataBinder.Eval(Container.DataItem, "Titles") %> '>
                                                </asp:HyperLink>
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                        <asp:TemplateColumn HeaderText="时间">
                                            <HeaderStyle Width="10%"></HeaderStyle>
                                            <ItemTemplate>
                                                <%# DataBinder.Eval(Container.DataItem, "dates", "{0:yyyy-MM-dd}")%>
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                    </Columns>
                                </asp:DataGrid></center>
                        </div>
                        <asp:HiddenField ID="HiddenField_list" runat="server" OnValueChanged="HiddenField_list_ValueChanged" />
                    </ContentTemplate>
                </asp:UpdatePanel>
                

<input type="button" runat="server" class="if wd2 btn 90V" value="批量删除" onclick="GetLevelHtmlServer()" />

CS主要代码:

    public partial class MessageBoard_list : ICallbackEventHandler //该类继承接口ICallbackEventHandler
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            ClientScriptManager csm = this.ClientScript;
            string GetLevelHtmlClient = csm.GetCallbackEventReference(this, "sqlString", "GetLevelHtmlClient", "");
            string GetLevelHtmlServer = "function GetLevelHtmlServer (sqlString) { " + GetLevelHtmlClient + "; }";
            csm.RegisterClientScriptBlock(this.GetType(), "Init", GetLevelHtmlServer, true);
         }

        //实现接口ICallbackEventHandler的方法GetCallbackResult和RaiseCallbackEvent
        string returnValue = "";
        public string GetCallbackResult()
        {
            return returnValue;
        }

        public void RaiseCallbackEvent(string eventArgument)
        {
            string text = eventArgument;

            returnValue = GetCount();
        }

        //自定义方法,实现选中的记录的回传 
        public string GetCount()
        {
            int count = 0;
            string ids = string.Empty;
            for (int i = 0; i < this.PolicyDataGrid.Items.Count; i++)
            {
                CheckBox cbx = (CheckBox)this.PolicyDataGrid.Items[i].Cells[0].FindControl("Cbx1");
                if (cbx.Checked)
                {
                    count++;
                    ids = ids + PolicyDataGrid.DataKeys[i].ToString() + ",";
                }
            }
            return ids + count.ToString();
        }

        //删除数据       
        [System.Web.Services.WebMethod]
        public static int DeleteData(string ids)
        {
            if (ids.Length > 1)
            {
                try
                {
                    Lzgjj.BLL.MessageBoard BLL = new Lzgjj.BLL.MessageBoard();
                    string str = string.Empty;
                    str = ids.Substring(0, ids.LastIndexOf(','));
                    if (str.Length > 0)
                    {
                        BLL.Delete(str);
                    }
                }
                catch
                {
                }
            }
            return 0;
        }

        protected void HiddenField_list_ValueChanged(object sender, EventArgs e)
        {
             this.InitPage();
            UpdatePanel_list.Update();
        }
    }

posted on 2008-12-03 10:39  飘渺冰血  阅读(194)  评论(0编辑  收藏  举报