zoukankan      html  css  js  c++  java
  • 扩展GridView全选功能

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web.UI.WebControls;
    using System.Web.UI;
    using System.ComponentModel;
    using System.Collections;
    using CommonLib;
    
    namespace WebControls
    {
        [ToolboxData("<{0}:AXGridView runat=\"server\"></{0}:AXGridView>")]
        [ParseChildren(true)]
        [PersistChildren(false)]
        public class AXGridView : GridView
        {
            public AXGridView()
                : base()
            {
                PreRender += new EventHandler(AXGridView_PreRender);
                try
                {
                    this.PageSize = SystemConfig.GridViewPageSize;
                }
                catch
                {
                    this.PageSize = 30;
                }
            }
    
    
            #region Check Box All Properties
    
            private CascadeCheckBoxCollection _cascadeCheckBoxes;
            [
           PersistenceMode(PersistenceMode.InnerProperty),
           DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
           Description("复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成"),
           Category("扩展")
           ]
            public CascadeCheckBoxCollection CascadeCheckBoxes
            {
                get
                {
                    if (_cascadeCheckBoxes == null)
                    {
                        _cascadeCheckBoxes = new CascadeCheckBoxCollection();
                    }
                    return _cascadeCheckBoxes;
                }
                set { _cascadeCheckBoxes = value; }
            }
    
            #endregion
    
            #region Check Box All Fields
            /// <summary>
            /// 用于存每组的全选复选框ID
            /// </summary>
            private string _checkAllIDString;
            /// <summary>
            /// 用于存每的项复选框ID
            /// </summary>
            private string _checkItemIDString;
            /// <summary>
            /// 每行有一个组的所有项复选框
            /// </summary>
            private Dictionary<int, string> _checkItemIDDictionary = new Dictionary<int, string>();
            #endregion
    
            void AXGridView_PreRender(object sender, EventArgs e)
            {
                if (CascadeCheckBoxes.Count > 0)
                {
                    if (!Page.ClientScript.IsClientScriptBlockRegistered("JsCheckAll"))
                    {
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JsCheckAll", jsCheckAll);
                    }
    
                    StringBuilder script = new StringBuilder();
    
                    foreach (CascadeCheckbox cc in this.CascadeCheckBoxes)
                    {
                        script.AppendFormat(String.Format("yy_sgv_ccGridView_pre.push('{0}');",
                            this.NamingContainer.Parent == null ? this.ID : string.Format("{0}_{1}", this.NamingContainer.ClientID, this.ID)));
    
                        script.AppendFormat(String.Format("yy_sgv_ccAll_post.push('{0}');", cc.ParentCheckboxID));
                        script.AppendFormat(String.Format("yy_sgv_ccItem_post.push('{0}');", cc.ChildCheckboxID));
                    }
    
                    // 注册向数组中添加成员的脚本
                    if (!Page.ClientScript.IsClientScriptBlockRegistered(String.Format("yy_sgv_cascadeCheckbox_{0}", this.ID)))
                    {
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), String.Format("yy_sgv_cascadeCheckbox_{0}", this.ID), script.ToString(), true);
                    }
                }
            }
    
            #region Check Box All Script
            internal const string jsCheckAll = @"<script type=""text/javascript"">
            //<![CDATA[
                         /*联动复选框 开始*/
                    var yy_sgv_ccGridView_pre = new Array(); // cs中动态向其灌数据(GridView内控件ID的前缀数组)
                    var yy_sgv_ccAll_post = new Array(); // cs中动态向其灌数据(全选复选框ID的后缀数组)
                    var yy_sgv_ccItem_post = new Array(); // cs中动态向其灌数据(项复选框ID的后缀数组)
    
    
                    function yy_sgv_ccCheck(e) 
                    {
                    /// <summary>单击复选框时</summary>
    
                        var evt = e || window.event; // FF || IE
                        var obj = evt.target || evt.srcElement  // FF || IE
    
                        var ccIndex = -1;
                        for (var i=0; i<yy_sgv_ccGridView_pre.length; i++)
                        {   
                            if (obj.id.startsWith(yy_sgv_ccGridView_pre[i])
                                        && (obj.id.endsWith(yy_sgv_ccAll_post[i]) || obj.id.endsWith(yy_sgv_ccItem_post[i])))
                            {
                                ccIndex = i;
                                break;
                            }
                        }           
                        
                        if (ccIndex != -1)
                        {
                            if (obj.id.endsWith(yy_sgv_ccAll_post[i]))
                            {
                                yy_sgv_ccCheckAll(ccIndex, obj.checked);
                            }
                            else if (obj.id.endsWith(yy_sgv_ccItem_post[i]))
                            {
                                yy_sgv_ccCheckItem(ccIndex);
                            }
                        }
                    }
    
                    function yy_sgv_ccCheckAll(ccIndex, isCheckAll)
                    {
                    /// <summary>设置全选复选框的状态</summary>
    
                        var elements =  document.getElementsByTagName('INPUT');
                        
                        for (i=0; i< elements.length; i++) 
                        {       
                            if (elements[i].type == 'checkbox' 
                                && elements[i].id.startsWith(yy_sgv_ccGridView_pre[ccIndex]) 
                                && elements[i].id.endsWith(yy_sgv_ccItem_post[ccIndex])) 
                            {
                                elements[i].checked = isCheckAll;
                                
    //                            if (yy_sgv_crClassName != '')
    //                            {
    //                                yy_sgv_changeCheckedRowCssClass(elements[i], yy_sgv_crClassName, false);
    //                            }
                            }
                        }    
                    }
    
                    function yy_sgv_ccCheckItem(ccIndex)
                    {
                    /// <summary>单击项复选框时</summary>
    
                        var elements =  document.getElementsByTagName('INPUT');
                        
                        var checkedNum = 0;
                        var uncheckedNum = 0;
                        
                        for (i=0; i< elements.length; i++) 
                        {       
                            if (elements[i].type == 'checkbox' 
                                && elements[i].id.startsWith(yy_sgv_ccGridView_pre[ccIndex]) 
                                && elements[i].id.endsWith(yy_sgv_ccItem_post[ccIndex])) 
                            {
                                if (elements[i].checked)
                                {
                                    checkedNum++;
                                }
                                else
                                {
                                    uncheckedNum++;
                                }
                            }
                        }
                        
                        if (uncheckedNum == 0)
                        {
                            yy_sgv_ccCheckCheckbox(yy_sgv_ccGridView_pre[ccIndex], yy_sgv_ccAll_post[ccIndex], true)
                        }
                        else
                        {
                            yy_sgv_ccCheckCheckbox(yy_sgv_ccGridView_pre[ccIndex], yy_sgv_ccAll_post[ccIndex], false)
                        }
                    }
    
                    function yy_sgv_ccCheckCheckbox(pre, post, isCheckAll)
                    {
                    /// <summary>设置项复选框的状态</summary>
    
                        var elements =  document.getElementsByTagName('INPUT');
                        
                        for (i=0; i< elements.length; i++) 
                        {       
                            if (elements[i].type == 'checkbox'
                                && elements[i].id.startsWith(pre) 
                                && elements[i].id.endsWith(post)) 
                            {
                                elements[i].checked = isCheckAll;
                                break;
                            }
                        }    
                    }
    
                    function yy_sgv_ccListener()
                    {
                    /// <summary>监听所有联动复选框的单击事件</summary>
    
                        var elements =  document.getElementsByTagName('INPUT');
                        
                        for (i=0; i< elements.length; i++) 
                        {       
                            if (elements[i].type == 'checkbox') 
                            {
                                for (j=0; j<yy_sgv_ccGridView_pre.length; j++)
                                {
                                    if (elements[i].id.startsWith(yy_sgv_ccGridView_pre[j]) 
                                        && (elements[i].id.endsWith(yy_sgv_ccAll_post[j]) || elements[i].id.endsWith(yy_sgv_ccItem_post[j])))
                                    {
                                      //alert(elements[i].id +' '+ yy_sgv_ccGridView_pre[j]+' ' + yy_sgv_ccAll_post[j] +' '+yy_sgv_ccItem_post[j] );
                                        Fun_addEvent(elements[i], 'click', yy_sgv_ccCheck); 
                                        break;
                                    }
                                }
                            }
                        }    
                    }
                       
                    if (document.all)
                    {
                        window.attachEvent('onload', yy_sgv_ccListener)
                    }
                    else
                    {
                        window.addEventListener('load', yy_sgv_ccListener, false);
                    }
            //]]>
            </script>";
            #endregion
    
            #region Empty Row
    
            public string EmptyTableClientID
            {
                get
                {
                    if (ViewState["EmptyTableClientID"] == null)
                    {
                        return string.Empty;
                    }
                    return ViewState["EmptyTableClientID"].ToString();
                }
                set
                {
                    ViewState["EmptyTableClientID"] = value;
                }
    
            }
    
            public bool DisplayEmptyRow
            {
                get
                {
                    if (ViewState["DisplayEmptyRow"] == null)
                    {
                        return true;
                    }
                    return Convert.ToBoolean(ViewState["DisplayEmptyRow"]);
                }
                set
                {
                    ViewState["DisplayEmptyRow"] = value;
                }
            }
    
            public bool DisplayEmptyText
            {
                get
                {
                    if (ViewState["DisplayEmptyText"] == null)
                    {
                        return true;
                    }
                    return Convert.ToBoolean(ViewState["DisplayEmptyText"]);
                }
                set
                {
                    ViewState["DisplayEmptyText"] = value;
                }
            }
    
    
            public string EmptyRowText
            {
                get
                {
                    if (ViewState["EmptyRowText"] == null)
                    {
                        return "";
                    }
                    return ViewState["EmptyRowText"].ToString();
                }
                set
                {
                    ViewState["EmptyRowText"] = value;
                }
    
            }
    
            /// <summary>
            /// Display empty row if no row return from data source
            /// </summary>
            /// <param name="e"></param>
            protected override void OnDataBound(EventArgs e)
            {
                base.OnDataBound(e);
                if (this.Rows.Count == 0 && DisplayEmptyRow)
                {
                    int visibleColumnCount = 0;
                    GridViewRow newRow = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
                    for (int i = 0; i < this.Columns.Count; i++)
                    {
                        if (this.Columns[i].Visible)
                        {
                            //TODO: set up empty row style here
                            TableHeaderCell cell = new TableHeaderCell();
                            cell.Text = this.Columns[i].HeaderText;
                            cell.Scope = TableHeaderScope.Column;
                            //cell.BackColor = this.HeaderStyle.BackColor;
                            //cell.ForeColor = this.HeaderStyle.ForeColor;
                            //cell.Font.CopyFrom(this.HeaderStyle.Font);
                            //cell.Font.Bold = true;
                            //cell.VerticalAlign = this.HeaderStyle.VerticalAlign;
                            newRow.Cells.Add(cell);
                            visibleColumnCount++;
                        }
                    }
                    newRow.BackColor = HeaderStyle.BackColor;
                    newRow.ForeColor = HeaderStyle.ForeColor;
                    newRow.Font.CopyFrom(HeaderStyle.Font);
                    newRow.VerticalAlign = HeaderStyle.VerticalAlign;
                    newRow.HorizontalAlign = HeaderStyle.HorizontalAlign;
                    newRow.CssClass = HeaderStyle.CssClass;
                    newRow.BorderStyle = HeaderStyle.BorderStyle;
                    newRow.BorderWidth = HeaderStyle.BorderWidth;
                    newRow.Height = HeaderStyle.Height;
                    newRow.Width = HeaderStyle.Width;
    
                    Table table = new Table();
                    table.CopyBaseAttributes(this);
                    table.ID = "Table";
                    table.Rows.Add(newRow);
    
                    if (DisplayEmptyText)
                    {
                        GridViewRow newRow2 = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
                        newRow2.Cells.Add(new TableCell());
                        newRow2.Cells[0].Text = EmptyRowText;
                        newRow2.Cells[0].BackColor = this.Columns[0].ItemStyle.BackColor;
                        newRow2.Cells[0].ForeColor = this.Columns[0].ItemStyle.ForeColor;
                        newRow2.Cells[0].ColumnSpan = visibleColumnCount;
                        newRow2.Cells[0].HorizontalAlign = HorizontalAlign.Center;
                        table.Rows.Add(newRow2);
                    }
                    table.Style[HtmlTextWriterStyle.Height] = "auto;";
                    this.Controls.Add(table);
    
                    EmptyTableClientID = table.ClientID;
                }
                else
                {
                    EmptyTableClientID = this.ClientID;
                }
            }
            #endregion
    
            #region Sort Tooltip
            //private SortTip _sortTip;
    
            /// <summary>
            /// Sort tooltip information
            /// </summary>
    
            //[Description("Sort tooltip information"),
            //Category("Expand"),
            //DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
            //PersistenceMode(PersistenceMode.InnerProperty)]
            //public virtual SortTip SortTip
            //{
            //    get
            //    {
            //        if (_sortTip == null)
            //        {
            //            _sortTip = new SortTip();
            //        }
            //        return _sortTip;
            //    }
            //}
            #endregion
    
            #region Command Buttons Confirm Message
            public string SelectConfirmMessage
            {
                get
                {
                    if (ViewState["SelectConfirmMessage"] == null)
                    {
                        return string.Empty;
                    }
                    return ViewState["SelectConfirmMessage"].ToString();
                }
                set
                {
                    ViewState["SelectConfirmMessage"] = value;
                }
            }
    
            public string DeleteConfirmMessage
            {
                get
                {
                    if (ViewState["DeleteConfirmMessage"] == null)
                    {
                        return "";
                    }
                    return ViewState["DeleteConfirmMessage"].ToString();
                }
                set
                {
                    ViewState["DeleteConfirmMessage"] = value;
                }
            }
    
            public string DeleteSelectedConfirmMessage
            {
                get
                {
                    if (ViewState["DeleteSelectedConfirmMessage"] == null)
                    {
                        return "";
                    }
                    return ViewState["DeleteSelectedConfirmMessage"].ToString();
                }
                set
                {
                    ViewState["DeleteSelectedConfirmMessage"] = value;
                }
            }
    
    
            public string UpdateConfirmMessage
            {
                get
                {
                    if (ViewState["UpdateConfirmMessage"] == null)
                    {
                        return string.Empty;
                    }
                    return ViewState["UpdateConfirmMessage"].ToString();
                }
                set
                {
                    ViewState["UpdateConfirmMessage"] = value;
                }
            }
    
            public string EditConfirmMessage
            {
                get
                {
                    if (ViewState["EditConfirmMessage"] == null)
                    {
                        return string.Empty;
                    }
                    return ViewState["EditConfirmMessage"].ToString();
                }
                set
                {
                    ViewState["EditConfirmMessage"] = value;
                }
            }
    
            public string CancelConfirmMessage
            {
                get
                {
                    if (ViewState["CancelConfirmMessage"] == null)
                    {
                        return string.Empty;
                    }
                    return ViewState["CancelConfirmMessage"].ToString();
                }
                set
                {
                    ViewState["CancelConfirmMessage"] = value;
                }
            }
    
    
            #endregion
    
            #region Sort Image And Text
            private string _sortDescImage = "../App_Themes/Default/Images/desc.gif";
            /// <summary>
            /// 降序提示图片
            /// </summary>
            public string SortDescImage
            {
                get { return _sortDescImage; }
                set { _sortDescImage = value; }
            }
    
            private string _sortAscImage = "../App_Themes/Default/Images/asc.gif";
            /// <summary>
            /// 升序提示图片
            /// </summary>
            public string SortAscImage
            {
                get { return _sortAscImage; }
                set { _sortAscImage = value; }
            }
    
            private string _sortDescText;
            /// <summary>
            /// 降序提示文本
            /// </summary>
            public string SortDescText
            {
                get { return _sortDescText; }
                set { _sortDescText = value; }
            }
    
            private string _sortAscText;
            /// <summary>
            /// 升序提示文本
            /// </summary>
            public string SortAscText
            {
                get { return _sortAscText; }
                set { _sortAscText = value; }
            }
            #endregion
    
            protected override void OnRowDataBound(GridViewRowEventArgs e)
            {
                #region Sort Tooltip
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    for (int i = 0; i < e.Row.Cells.Count; i++)
                    {
                        LinkButton lbtn = null;
    
                        if (e.Row.Cells[i].Controls.Count > 0)
                        {
                            for (int k = 0; k < e.Row.Cells[i].Controls.Count; k++)
                            {
                                lbtn = e.Row.Cells[i].Controls[k] as LinkButton;
                                if (lbtn != null)
                                {
                                    if (lbtn.CommandArgument.Equals(this.SortExpression))
                                    {
                                        Image imgControl = null;
                                        Label lblControl = null;
                                        //Ascending sort
                                        if (this.SortDirection == SortDirection.Ascending)
                                        {
                                            //if (!string.IsNullOrEmpty(this.SortTip.SortAscText))
                                            //{
                                            //    lblControl = new Label();
                                            //    lblControl.Text = this.SortTip.SortAscText;
                                            //}
    
                                            //if (!string.IsNullOrEmpty(this.SortTip.SortAscImage))
                                            //{
                                            //    imgControl = new Image();
                                            //    imgControl.ImageUrl = ResolveUrl(this.SortTip.SortAscImage);
                                            //}
    
                                            if (!string.IsNullOrEmpty(this.SortAscText))
                                            {
                                                lblControl = new Label();
                                                lblControl.Text = this.SortAscText;
                                            }
    
                                            if (!string.IsNullOrEmpty(this.SortAscImage))
                                            {
                                                imgControl = new Image();
                                                imgControl.ImageUrl = ResolveUrl(this.SortAscImage);
                                            }
    
                                        }
                                        else
                                        {
                                            //if (!string.IsNullOrEmpty(this.SortTip.SortDescText))
                                            //{
                                            //    lblControl = new Label();
                                            //    lblControl.Text = this.SortTip.SortDescText;
                                            //}
    
                                            //if (!string.IsNullOrEmpty(this.SortTip.SortDescImage))
                                            //{
                                            //    imgControl = new Image();
                                            //    imgControl.ImageUrl = ResolveUrl(this.SortTip.SortDescImage);
                                            //}
    
                                            if (!string.IsNullOrEmpty(this.SortDescText))
                                            {
                                                lblControl = new Label();
                                                lblControl.Text = this.SortDescText;
                                            }
    
                                            if (!string.IsNullOrEmpty(this.SortDescImage))
                                            {
                                                imgControl = new Image();
                                                imgControl.ImageUrl = ResolveUrl(this.SortDescImage);
                                            }
                                        }
                                        //Add sort tooltip text and image to sort field 
                                        if (lblControl != null)
                                        {
                                            e.Row.Cells[i].Controls.Add(lblControl);
                                        }
                                        if (imgControl != null)
                                        {
                                            e.Row.Cells[i].Controls.Add(imgControl);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion
    
                #region Command Buttons Confirm Message
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    foreach (TableCell tc in e.Row.Cells)
                    {
                        foreach (Control ctl in tc.Controls)
                        {
                            if (ctl is IButtonControl)
                            {
                                IButtonControl cmdButton = ctl as IButtonControl;
                                if (!string.IsNullOrEmpty(DeleteConfirmMessage) && cmdButton.CommandName.ToLower() == "delete")
                                {
                                    IAttributeAccessor iattr = (IAttributeAccessor)cmdButton;
                                    iattr.SetAttribute("onclick", string.Format("javascript:return confirm('{0}');", DeleteConfirmMessage));
                                }
                                if (!string.IsNullOrEmpty(SelectConfirmMessage) && cmdButton.CommandName.ToLower() == "select")
                                {
                                    IAttributeAccessor iattr = (IAttributeAccessor)cmdButton;
                                    iattr.SetAttribute("onclick", string.Format("javascript:return confirm('{0}');", SelectConfirmMessage));
                                }
                                if (!string.IsNullOrEmpty(EditConfirmMessage) && cmdButton.CommandName.ToLower() == "edit")
                                {
                                    IAttributeAccessor iattr = (IAttributeAccessor)cmdButton;
                                    iattr.SetAttribute("onclick", string.Format("javascript:return confirm('{0}');", EditConfirmMessage));
                                }
                                if (!string.IsNullOrEmpty(UpdateConfirmMessage) && cmdButton.CommandName.ToLower() == "update")
                                {
                                    IAttributeAccessor iattr = (IAttributeAccessor)cmdButton;
                                    iattr.SetAttribute("onclick", string.Format("javascript:return confirm('{0}');", UpdateConfirmMessage));
                                }
                                if (!string.IsNullOrEmpty(CancelConfirmMessage) && cmdButton.CommandName.ToLower() == "cancel")
                                {
                                    IAttributeAccessor iattr = (IAttributeAccessor)cmdButton;
                                    iattr.SetAttribute("onclick", string.Format("javascript:return confirm('{0}');", CancelConfirmMessage));
                                }
                            }
                        }
                    }
                }
    
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    foreach (TableCell tc in e.Row.Cells)
                    {
                        foreach (Control ctl in tc.Controls)
                        {
                            if (ctl is IButtonControl)
                            {
                                IButtonControl cmdButton = ctl as IButtonControl;
                                if (!string.IsNullOrEmpty(DeleteSelectedConfirmMessage) && cmdButton.CommandName.ToLower() == "deleteselected")
                                {
                                    IAttributeAccessor iattr = (IAttributeAccessor)cmdButton;
                                    iattr.SetAttribute("onclick", string.Format("javascript:return confirm('{0}');", DeleteSelectedConfirmMessage));
                                }
                            }
                        }
                    }
                }
                #endregion
    
                #region Check Box All
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    //for (int i = 0; i < e.Row.Cells.Count; i++)
                    //{
                    //    for (int j = 0; j < e.Row.Cells[i].Controls.Count; j++)
                    //    {
                    //        if (e.Row.Cells[i].Controls[j] is CheckBox)
                    //        {
                    //            CheckBox chk = e.Row.Cells[i].Controls[j] as CheckBox;
                    //            bool isCheckBoxAll = false;
                    //            foreach (CheckboxAll cba in this.CheckBoxAlls)
                    //            {
                    //                if (chk.NamingContainer.ClientID + "_" + cba.CheckboxItemID == chk.ClientID)
                    //                {
                    //                    isCheckBoxAll = true;
                    //                    break;
                    //                }
                    //            }
                    //            if (isCheckBoxAll)
                    //            {
                    //                chk.Attributes.Add("onclick", "yy_ClickCheckItem()");
                    //                if (_checkItemIDDictionary.Count == 0 || !_checkItemIDDictionary.ContainsKey(i))
                    //                {
                    //                    _checkItemIDDictionary.Add(i, chk.ClientID);
                    //                }
                    //                else
                    //                {
                    //                    string s;
                    //                    _checkItemIDDictionary.TryGetValue(i, out s);
                    //                    _checkItemIDDictionary.Remove(i);
                    //                    _checkItemIDDictionary.Add(i, s + this.ItemSeparator + chk.ClientID);
                    //                }
                    //                break;
                    //            }
    
                    //        }
                    //    }
                    //}
                }
                else if (e.Row.RowType == DataControlRowType.Header)
                {
                    //for (int i = 0; i < e.Row.Cells.Count; i++)
                    //{
                    //    for (int j = 0; j < e.Row.Cells[i].Controls.Count; j++)
                    //    {
                    //        if (e.Row.Cells[i].Controls[j] is CheckBox)
                    //        {
                    //            CheckBox chk = (CheckBox)e.Row.Cells[i].Controls[j];
    
                    //            bool isCheckboxAll = false;
                    //            foreach (CheckboxAll cba in this.CheckBoxAlls)
                    //            {
                    //                if (chk.NamingContainer.ClientID + "_" + cba.CheckboxAllID == chk.ClientID)
                    //                {
                    //                    isCheckboxAll = true;
                    //                    break;
                    //                }
                    //            }
    
                    //            if (isCheckboxAll)
                    //            {
                    //                chk.Attributes.Add("onclick", "yy_ClickCheckAll(this)");
    
                    //                if (String.IsNullOrEmpty(this._checkAllIDString))
                    //                {
                    //                    this._checkAllIDString += chk.ClientID;
                    //                }
                    //                else
                    //                {
                    //                    this._checkAllIDString += this.GroupSeparator + chk.ClientID;
                    //                }
                    //                break;
                    //            }
                    //        }
                    //    }
                    //}
                }
                else if (e.Row.RowType == DataControlRowType.Pager)
                {
                    //TODO:
                    //LinkButton lbtnDelete = new LinkButton();
                    //lbtnDelete.Text = "Delete Selected";
                    //lbtnDelete.CommandName = "deleteall";
                    //e.Row.Cells[0].Controls.Add(lbtnDelete);
                }
                #endregion
    
                base.OnRowDataBound(e);
            }
    
            /// <summary>
            /// 获取GridView中通过复选框选中的行的DataKey集合
            /// </summary>      
            /// <param name="columnIndex">CheckBox在GridView中的列索引</param>
            /// <returns></returns>
            public List<DataKey> GetCheckedDataKey(int columnIndex)
            {
                if (this.DataKeyNames.Length == 0)
                    throw new ArgumentNullException("DataKeys", "DataKeyNames are null or empty.");
    
                List<DataKey> list = new List<DataKey>();
    
                int i = 0;
                foreach (GridViewRow row in this.Rows)
                {
                    if (row.RowType == DataControlRowType.DataRow)
                    {
                        foreach (Control c in row.Cells[columnIndex].Controls)
                        {
                            if (c is CheckBox && ((CheckBox)c).Checked)
                            {
                                list.Add(this.DataKeys[i]);
                                break;
                            }
                        }
                        i++;
                    }
                }
                return list;
            }
    
            /// <summary>
            /// 获取GridView中通过复选框选中的行的DataKey集合
            /// </summary>      
            /// <param name="columnIndex">CheckBox在GridView中的列索引</param>
            /// <param name="columnIndex">Whether the checkbox was selected</param>
            /// <returns></returns>
            public string BuildXmlStringByDataKey(string xmlRootName, int columnIndex, out bool isCheck)
            {
                if (this.DataKeyNames.Length == 0)
                    throw new ArgumentNullException("DataKeys", "DataKeyNames are null or empty.");
    
                StringBuilder xmlString = new StringBuilder();
                xmlString.AppendFormat("<{0}>", xmlRootName);
                isCheck = false;
    
                int i = 0;
                foreach (GridViewRow row in this.Rows)
                {
                    if (row.RowType == DataControlRowType.DataRow)
                    {
                        foreach (Control c in row.Cells[columnIndex].Controls)
                        {
                            if (c is CheckBox && ((CheckBox)c).Checked)
                            {
                                xmlString.AppendFormat("<value>{0}</value>", this.DataKeys[i].Value);
                                isCheck = true;
                                break;
                            }
                        }
                        i++;
                    }
                }
                xmlString.AppendFormat("</{0}>", xmlRootName);
                return xmlString.ToString();
            }
    
        }
    
        /// <summary>
        /// Sort tip helper class
        /// </summary>
        [TypeConverter(typeof(ExpandableObjectConverter))]
        public class SortTip
        {
            private string _sortDescImage;
            /// <summary>
            /// 降序提示图片
            /// </summary>
            [
            Description("降序提示图片"),
            Category("扩展"),
            Editor("System.Web.UI.Design.UrlEditor", typeof(System.Drawing.Design.UITypeEditor)),
            DefaultValue(""),
            NotifyParentProperty(true)
            ]
            public string SortDescImage
            {
                get { return _sortDescImage; }
                set { _sortDescImage = value; }
            }
    
            private string _sortAscImage;
            /// <summary>
            /// 升序提示图片
            /// </summary>
            [
            Description("升序提示图片"),
            Category("扩展"),
            Editor("System.Web.UI.Design.UrlEditor", typeof(System.Drawing.Design.UITypeEditor)),
            DefaultValue(""),
            NotifyParentProperty(true)
            ]
            public string SortAscImage
            {
                get { return _sortAscImage; }
                set { _sortAscImage = value; }
            }
    
            private string _sortDescText;
            /// <summary>
            /// 降序提示文本
            /// </summary>
            [
            Description("降序提示文本"),
            Category("扩展"),
            DefaultValue(""),
            NotifyParentProperty(true)
            ]
            public string SortDescText
            {
                get { return _sortDescText; }
                set { _sortDescText = value; }
            }
    
            private string _sortAscText;
            /// <summary>
            /// 升序提示文本
            /// </summary>
            [
            Description("升序提示文本"),
            Category("扩展"),
            DefaultValue(""),
            NotifyParentProperty(true)
            ]
            public string SortAscText
            {
                get { return _sortAscText; }
                set { _sortAscText = value; }
            }
    
            /// <summary>
            /// ToString()
            /// </summary>
            /// <returns></returns>
            public override string ToString()
            {
                return "SortTip";
            }
    
    
        }
    
        /// <summary>
        /// CheckboxAll class for multi-selection support
        /// </summary>
        [ToolboxItem(false)]
        public class CascadeCheckbox
        {
            private string _ParentCheckboxID;
            /// <summary>
            /// Parent box ID in template
            /// </summary>      
            public string ParentCheckboxID
            {
                set {_ParentCheckboxID= value;}
                get { return _ParentCheckboxID; }
            }
    
            private string _ChildCheckboxID;
            /// <summary>
            /// Child item box ID in template
            /// </summary>        
            public string ChildCheckboxID
            {
                set { _ChildCheckboxID = value; }
                get { return _ChildCheckboxID; }
            }
        }
    
        public class CascadeCheckBoxCollection : CollectionBase
        {
            public CascadeCheckBoxCollection()
                : base()
            {
            }
    
            public CascadeCheckbox this[int index]
            {
                get
                {
                    return base.List[index] as CascadeCheckbox;
                }
                set
                {
                    base.List[index] = (CascadeCheckbox)value;
                }
            }
    
            public void Add(CascadeCheckbox item)
            {
                base.List.Add(item);
            }
    
            public void Remove(int index)
            {
                if (index > -1 && index < base.Count)
                {
                    base.List.RemoveAt(index);
                }
            }
    
            public override string ToString()
            {
                return "CascadeCheckBoxCollection";
            }
        }
    
    }
    
  • 相关阅读:
    使用 ASP.NET Core MVC 创建 Web API(五)
    使用 ASP.NET Core MVC 创建 Web API(四)
    使用 ASP.NET Core MVC 创建 Web API(三)
    使用 ASP.NET Core MVC 创建 Web API(二)
    使用 ASP.NET Core MVC 创建 Web API(一)
    学习ASP.NET Core Razor 编程系列十九——分页
    学习ASP.NET Core Razor 编程系列十八——并发解决方案
    一个屌丝程序猿的人生(九十八)
    一个屌丝程序猿的人生(九十七)
    一个屌丝程序猿的人生(九十五)
  • 原文地址:https://www.cnblogs.com/blackbean/p/2025134.html
Copyright © 2011-2022 走看看