|
|
| 实现类似Windows资源管理器的DataGrid(2) |
| 作者:不详 来源:不详 发布时间:2006-8-14 9:19:21 发布人:chinazhan |
减小字体
增大字体
private void Page_Load(object sender, System.EventArgs e) { m_iSortColumnIdx = -1; m_strSortExpr = ""; m_strSortOrder = ""; ProcessViewState(); PrepareColumnHeaderMap(); if (!IsPostBack) { BindGridToView(); } } private void PrepareColumnHeaderMap() { colHeaderMap = new Hashtable(); int idx = 0; foreach (DataGridColumn col in WinExplorerView_DataGrid.Columns) { colHeaderMap[col.SortExpression] = idx++; } } private void RetrieveData() { if (null == Cache["EmployeesDS"]) { string tmp = "SELECT LastName, FirstName, Title, BirthDate, City FROM Employees"; m_sqlConnection = new SqlConnection(strConn); m_sqlSelectCommand = new SqlCommand(tmp, m_sqlConnection); m_sqlDataAdapter = new SqlDataAdapter(m_sqlSelectCommand); m_dsEmployees = new DataSet("Employees"); m_sqlDataAdapter.Fill(m_dsEmployees); Cache.Insert("EmployeesDS", m_dsEmployees, null, DateTime.Now.AddMinutes(1), Cache.NoSlidingExpiration); } else { m_dsEmployees = (DataSet)Cache["EmployeesDS"]; } } private void ProcessViewState() { if (null != ViewState["SortExpr"]) { m_strSortExpr = ViewState["SortExpr"].ToString(); } if (null != ViewState["SortOrder"]) { m_strSortOrder = ViewState["SortOrder"].ToString(); } } private void BindGridToView() { string strSort = ""; if (0 != m_strSortExpr.Length) { strSort = m_strSortExpr; if (0 != m_strSortOrder.Length) { strSort += (" " + m_strSortOrder); } } RetrieveData(); m_dvEmployees = new DataView(m_dsEmployees.Tables[0], "", strSort, DataViewRowState.CurrentRows); WinExplorerView_DataGrid.DataSource = m_dvEmployees; WinExplorerView_DataGrid.DataBind(); } private Color GetSortColumnColor() { if (null == this.m_strSortOrder || String.Empty == this.m_strSortOrder|| 0 == this.m_strSortOrder.Length) { return Color.Gold; } if (m_strSortOrder.CompareTo("ASC") == 0) { return Color.Gold; } else { return Color.BlanchedAlmond; } } private void OnPageIndexChange(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { WinExplorerView_DataGrid.CurrentPageIndex = e.NewPageIndex; BindGridToView(); } private void OnSortView(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) { m_strSortExpr = e.SortExpression; ViewState["SortExpr"] = m_strSortExpr; if (0 == m_strSortOrder.Length) { m_strSortOrder = "ASC"; } else if (m_strSortOrder.CompareTo("ASC") == 0) { m_strSortOrder = "DESC"; } else { m_strSortOrder = "ASC"; } ViewState["SortOrder"] = m_strSortOrder; // 找到Click事件所在的列序号 m_iSortColumnIdx = Convert.ToInt32(this.colHeaderMap[m_strSortExpr]); BindGridToView(); } private void OnItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemType == ListItemType.Header) { int idx = 0; foreach (TableCell cl in e.Item.Cells) { cl.Attributes.Add("onmouseover", "showheadertip(" + idx.ToString() + ");"); cl.Attributes.Add("onmouseout", "hideheadertip(" + idx.ToString() + ");"); idx++; } } if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { if (-1 != m_iSortColumnIdx) { e.Item.Cells[m_iSortColumnIdx].BackColor = GetSortColumnColor(); } } } protected override void OnPreRender(EventArgs e) { ///ToolTip文字 int nCount = this.WinExplorerView_DataGrid.Columns.Count; for (int i = 0; i < nCount; i++) { Panel pnl = new Panel(); pnl.CssClass = "gridtooltip"; pnl.ID = "htip" + i.ToString(); Literal lt = new Literal(); lt.Text = this.GetHeaderTooltipText(i); pnl.Controls.Add(lt); this.Tips_PlaceHolder.Controls.Add(pnl); } base.OnPreRender (e); } private string GetHeaderTooltipText(int iColIdx) { switch (iColIdx) { case 0: return "职员的姓"; case 1: return "职员名字"; case 2: return "职员的职位"; case 3: return "出生日期"; case 4: return "居住地"; default: throw new ArgumentException("无效地列序号", "Index"); } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { InitializeComponent(); base.OnInit(e); } private void InitializeComponent() { this.WinExplorerView_DataGrid.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.OnItemCreated); this.WinExplorerView_DataGrid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.OnPageIndexChange); this.WinExplorerView_DataGrid.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.OnSortView); this.Load += new System.EventHandler(this.Page_Load); } #endregion } } 做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。
|
| |
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|