/* Copyright 2002-2008 Corey Trager Distributed under the terms of the GNU General Public License */ using System; using System.Web; using System.Data; namespace btnet { public class SortableHtmlTable { /////////////////////////////////////////////////////////////////////// public static void create_from_dataset( HttpResponse r, DataSet ds, string edit_url, string delete_url) { create_from_dataset(r, ds, edit_url, delete_url, true); } /////////////////////////////////////////////////////////////////////// public static void create_from_dataset( HttpResponse r, DataSet ds, string edit_url, string delete_url, bool html_encode) { create_start_of_table(r); create_headings(r, ds, edit_url, delete_url); create_body(r, ds, edit_url, delete_url, html_encode); create_end_of_table(r); } /////////////////////////////////////////////////////////////////////// public static void create_start_of_table( HttpResponse r) { r.Write("\n
 
\n"); r.Write("
click on column headings to sort
\n"); r.Write("
\n"); //r.Write ("\n"); r.Write("
\n"); } /////////////////////////////////////////////////////////////////////// public static void create_end_of_table( HttpResponse r) { // data r.Write("
\n"); r.Write("
\n"); r.Write("
 
\n"); } /////////////////////////////////////////////////////////////////////// // headings /////////////////////////////////////////////////////////////////////// public static void create_headings( HttpResponse r, DataSet ds, string edit_url, string delete_url) { r.Write("\n"); int db_column_count = 0; foreach (DataColumn dc in ds.Tables[0].Columns) { if ((edit_url != "" || delete_url != "") && db_column_count == (ds.Tables[0].Columns.Count - 1)) { if (edit_url != "") { r.Write("edit"); } if (delete_url != "") { r.Write("delete"); } } else { // determine data type string datatype = ""; if (Util.is_numeric_datatype(dc.DataType.ToString())) { datatype = "num"; } else if (dc.DataType.ToString() == "System.DateTime") { datatype = "date"; } else { datatype = "str"; } r.Write("\n"); if (dc.ColumnName.StartsWith("$no_sort_")) { r.Write(dc.ColumnName.Replace("$no_sort_", "")); } else { string sortlink = ""; sortlink = sortlink.Replace("$col", Convert.ToString(db_column_count)); sortlink = sortlink.Replace("$type", datatype); r.Write(sortlink); r.Write(dc.ColumnName); r.Write(""); } //r.Write ("
"); // for debugging //r.Write (dc.DataType); r.Write("\n"); } db_column_count++; } r.Write("\n"); } /////////////////////////////////////////////////////////////////////// // body, data /////////////////////////////////////////////////////////////////////// public static void create_body( HttpResponse r, DataSet ds, string edit_url, string delete_url, bool html_encode) { foreach (DataRow dr in ds.Tables[0].Rows) { r.Write("\n"); for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { string datatype = ds.Tables[0].Columns[i].DataType.ToString(); if ((edit_url != "" || delete_url != "") && i == (ds.Tables[0].Columns.Count - 1)) { if (edit_url != "") { r.Write("edit"); } if (delete_url != "") { r.Write("delete"); } } else { if (Util.is_numeric_datatype(datatype)) { r.Write(""); } else { r.Write(""); } if (dr[i].ToString() == "") { r.Write(" "); } else { if (datatype == "System.DateTime") { r.Write(Util.format_db_date(dr[i])); } else { if (html_encode) { r.Write(HttpUtility.HtmlEncode(dr[i].ToString())); } else { r.Write(dr[i]); } } } r.Write(""); } } r.Write("\n"); } } } // end SortableHtmlTable } // end namespace