📄 superdatagrid.cs
字号:
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(" ");
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(" ");
// Render each page number
for (int pageIndex=1;pageIndex <= pageCount;pageIndex++) {
writer.Write( " " );
if (pageIndex == CurrentPageIndex) {
writer.RenderBeginTag(HtmlTextWriterTag.B);
writer.Write(pageIndex.ToString());
writer.RenderEndTag();
} else {
RenderLink(writer, pageIndex.ToString(), "page_" + pageIndex.ToString() );
}
writer.Write( " " );
}
// render next link
writer.Write(" ");
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 + -