⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 superdatagrid.cs

📁 asp.net技术内幕的书配源码
💻 CS
📖 第 1 页 / 共 3 页
字号:
                        break;
                    case SqlDbType.Image :
                        writer.Write( "[Image]" );
                        break;
                    case SqlDbType.DateTime :
                        DateTime dtm = (DateTime)colValue;
                        if ( dtm.Date == dtm )
                            RenderTextBox(writer, colName, dtm.ToString("d"), 10, 1, 20);
                        else
                            RenderTextBox(writer, colName, dtm.ToString("g"), 20, 1, 30);
                        break;
                    default:
                        RenderTextBox(writer, colName, colValue, 5, 1, columnSize);
                        break;
                }        
        }



        //*********************************************************************
        //
        // RenderTextBox Method
        //
        // Display a textbox.
        //
        //*********************************************************************

        private void RenderTextBox(HtmlTextWriter writer, string colName, object colValue, int columns, int rows, int maxLength) {
            string name = "txt" + colName;
            if (rows > 1) {
                writer.AddAttribute(HtmlTextWriterAttribute.Id, name);
                writer.AddAttribute(HtmlTextWriterAttribute.Name, name);
                writer.AddAttribute(HtmlTextWriterAttribute.Cols, columns.ToString());
                writer.AddAttribute(HtmlTextWriterAttribute.Rows, rows.ToString());
                writer.RenderBeginTag(HtmlTextWriterTag.Textarea);
                writer.Write(colValue);
                writer.RenderEndTag();
            } else
                writer.Write( String.Format( "<input type=\"text\" name=\"{0}\" id=\"{0}\" value=\"{1}\" size=\"{2}\" maxlength=\"{3}\">", name, colValue, columns, maxLength) );
        }


        //*********************************************************************
        //
        // RenderSelect Method
        //
        // Display an HTML select list.
        //
        //*********************************************************************

        private void RenderSelect(HtmlTextWriter writer, string colName) {
            string name = "txt" + colName;
            bool selected = false;           
            if (colEditValues[name].ToString() == "True")
                selected = true;
                
            writer.AddAttribute(HtmlTextWriterAttribute.Id, name);
            writer.AddAttribute(HtmlTextWriterAttribute.Name, name);
            writer.RenderBeginTag(HtmlTextWriterTag.Select);
            writer.AddAttribute(HtmlTextWriterAttribute.Value, "True");
            if (selected)
                writer.AddAttribute(HtmlTextWriterAttribute.Selected, "SELECTED");
            writer.RenderBeginTag(HtmlTextWriterTag.Option);
            writer.Write("True");
            writer.RenderEndTag();
            writer.AddAttribute(HtmlTextWriterAttribute.Value, "False");
            if (!selected)
                writer.AddAttribute(HtmlTextWriterAttribute.Selected, "SELECTED");
            writer.RenderBeginTag(HtmlTextWriterTag.Option);
            writer.Write("False");
            writer.RenderEndTag();
            writer.RenderEndTag();
        }


        //*********************************************************************
        //
        // RenderLink Method
        //
        // Display a link that causes a postback.
        //
        //*********************************************************************

        private void RenderLink(HtmlTextWriter writer, string label, string argument) {
            writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:" + Page.GetPostBackEventReference(this, argument ) );
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.Write(label);
            writer.RenderEndTag();
        }


        //*********************************************************************
        //
        // RenderHeaderRow Method
        //
        // Display the first row in the HTML table. This row either displays
        // just the column names or column names that can be clicked and sorted.
        //
        //*********************************************************************

        private void RenderHeaderRow(HtmlTextWriter writer) {
            HeaderStyle.AddAttributesToRender(writer);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            if (_enableEditing) {
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                writer.Write("&nbsp;");
                writer.RenderEndTag();
            }

            if (_enableSorting)
                RenderSortHeaderRow(writer);
            else
                RenderNormalHeaderRow(writer);            
            writer.RenderEndTag();
        }


        //*********************************************************************
        //
        // RenderNormalHeaderRow Method
        //
        // Display all the column names.
        //
        //*********************************************************************

        private void RenderNormalHeaderRow(HtmlTextWriter writer) {
            foreach (DataColumn col in _dataGridData.Columns) {
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                writer.Write( col.ColumnName );
                writer.RenderEndTag();   
            }
        }

        //*********************************************************************
        //
        // RenderSortHeaderRow Method
        //
        // Display all the column names as links for sorting columns.
        //
        //*********************************************************************

        private void RenderSortHeaderRow(HtmlTextWriter writer) {
            Style _sortStyle = new Style();
            _sortStyle.CopyFrom(HeaderStyle);
            foreach (DataColumn col in _dataGridData.Columns) {
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                _sortStyle.AddAttributesToRender(writer);
                RenderLink(writer, col.ColumnName, "sort_" + col.ColumnName);
                writer.RenderEndTag();   
            }
        }


        //*********************************************************************
        //
        // RenderPager Method
        //
        // Display the pager user interface.
        //
        //*********************************************************************

        private void RenderPager(HtmlTextWriter writer) {
            // Calculate total records
            int totalRecords = _dataGridData.Rows.Count;

            // if less rows than PageSize then exit
            if (_pageSize > totalRecords)
                return;         

            // Calculate page count
            int pageCount = totalRecords / _pageSize;
        

            // Now do a mod for any remainder
            if ((totalRecords % _pageSize) > 0)
                pageCount ++;

       

            // calculate column count
            int columnCount = _dataGridData.Columns.Count;
            if (_enableEditing)
                columnCount ++;
        
            // Render Pager row
            _pagerStyle.AddAttributesToRender(writer);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Colspan, columnCount.ToString() );
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            
            // Render pager table
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "3");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            
            // render previous link
            if (CurrentPageIndex > 1)
                RenderLink(writer, _prevText, "page_" + (CurrentPageIndex -1) );
            else
                writer.Write( _prevText);
            writer.Write("&nbsp;");

            // Render each page number
            for (int pageIndex=1;pageIndex <= pageCount;pageIndex++) {
                writer.Write( "&nbsp;" );
                if (pageIndex == CurrentPageIndex) {
                    writer.RenderBeginTag(HtmlTextWriterTag.B);
                    writer.Write(pageIndex.ToString());
                    writer.RenderEndTag();
                } else {
                    RenderLink(writer, pageIndex.ToString(), "page_" + pageIndex.ToString() );
                }
                writer.Write( "&nbsp;" );
            }


            // render next link
            writer.Write("&nbsp;");
            if (CurrentPageIndex < pageCount)
                RenderLink(writer, _nextText, "page_" + (CurrentPageIndex + 1).ToString() );
            else
                writer.Write( _nextText);

            
            // Show pager text
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write(String.Format(_pagerText, CurrentPageIndex, pageCount));
            writer.RenderEndTag();
            
            writer.RenderEndTag(); // end cell
            writer.RenderEndTag(); // end row
            writer.RenderEndTag(); // end table
            
            
            writer.RenderEndTag(); // end pager row
            writer.RenderEndTag(); // end pager table
        }


        //*********************************************************************
        //
        // RenderError Method
        //
        // Display an error message in a JavaScript alert box.
        //
        //*********************************************************************

        private void RenderError(HtmlTextWriter writer) {
            writer.AddAttribute("language", "javascript");
            writer.RenderBeginTag(HtmlTextWriterTag.Script);
            writer.Write( String.Format(" alert(\"{0}\"); ", _errorMessage ));
            writer.RenderEndTag();
        }


        //*********************************************************************
        //
        // OnPreRender Method
        //
        // Enable smart navigation (so the Grid will scroll back to the
        // right place on postback) and register the control to require
        // postback event notifications.
        //
        //*********************************************************************

        protected override void OnPreRender(EventArgs e) {
            Page.SmartNavigation = true;
            Page.RegisterRequiresPostBack(this);

            // Get the Data
            LoadDatabaseData();

            // Sort the data table
            _dataGridView = _dataGridData.DefaultView;
            if (_enableSorting && SortColumn != String.Empty)
                _dataGridView.Sort = String.Format("{0} {1}", SortColumn, SortOrder);
            
            
            // Get the values for editing
            if (_editClicked) {
                for (int i=0;i < _dataGridData.Columns.Count;i++)
                    colEditValues["txt" + _dataGridData.Columns[i].ColumnName] = _dataGridView[EditItemIndex][i];
            }

            // Update the database with any edits
            if (_updateClicked) 
                UpdateDatabase();
                
            // Update the database with any deletes
            if (_deleteClicked)
                DeleteRow(_deleteItemIndex);    
        }


        //*********************************************************************
        //
        // RenderContents Method
        //
        // The main method that kicks off the rendering of the SuperDataGrid.
        //
        //*********************************************************************
        
        protected override void RenderContents(HtmlTextWriter writer) {


            // Display any error message
            if (_errorMessage != String.Empty)
                RenderError(writer);

            // Render opening table tag
            _tableStyle.AddAttributesToRender(writer);
            writer.RenderBeginTag(HtmlTextWriterTag.Table);
            
            // Render Header Row
            RenderHeaderRow( writer );
            
            // Render the HTML table
            RenderTable( writer);
            
            // Render Pager
            if (_enablePaging)
                RenderPager( writer );

            // Render End Table Tag
            writer.RenderEndTag();
        }




        //*********************************************************************
        //
        // SuperDataGrid Constructor
        //
        // Set defaults for formatting (user can override).
        //
        //*********************************************************************

        public SuperDataGrid() {
            TableStyle.CellSpacing = 0;
            TableStyle.CellPadding = 4;
            TableStyle.GridLines = GridLines.Vertical;
            TableStyle.BorderColor = ColorTranslator.FromHtml("#999999");
            TableStyle.BorderStyle = BorderStyle.Solid;
            TableStyle.BorderWidth = new Unit("1px");
            
            HeaderStyle.BackColor = ColorTranslator.FromHtml("#000084");
            HeaderStyle.ForeColor = Color.White;
            HeaderStyle.Font.Bold = true;
            
            ItemStyle.BackColor = ColorTranslator.FromHtml("#EEEEEE");
            AlternatingItemStyle.BackColor = Color.Gainsboro;
            
            PagerStyle.BackColor = ColorTranslator.FromHtml("#999999");
        }    
    
    
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -