/* * jQuery UI Progressbar @VERSION * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Progressbar * * Depends: * jquery.ui.core.js * jquery.ui.widget.js */ (function ($, undefined) { $.widget("ui.columnsort", { version: "@VERSION", options: { }, _create: function () { var self = this.element; $(self).addClass("sortTable").find("tr:first").addClass("sortColumns").children().addClass("sortColumn") .disableSelection().css("cursor", "pointer").click(this._sortByColumn); }, _sortByColumn: function () { var sortCell = $(this).closest(".sortColumn"); var selectedIndex = sortCell.index(); var hadclass = $(sortCell).hasClass("asc"); $(sortCell).closest(".sortColumns").find(".sortColumn").removeClass("asc").removeClass("desc"); hadclass ? $(sortCell).addClass("desc") : $(sortCell).addClass("asc"); var table = $(this).closest("table"); var rows = $(table).find("tr:not(.sortColumns)"); rows.sort(function (a, b) { var keyA = $('td:eq(' + selectedIndex + ')', a).text(); var keyB = $('td:eq(' + selectedIndex + ')', b).text(); var checkkeyA = parseInt(keyA); var checkkeyB = parseInt(keyB); if (!parseInt(keyA)) { checkkeyA = keyA; checkkeyB = keyB; } if ($(sortCell).hasClass('asc')) { return (checkkeyA > checkkeyB) ? 1 : -1; } else { return (checkkeyA < checkkeyB) ? 1 : -1; } }); rows.each(function (index, row) { if ($(row).hasClass("resultstableitema") || $(row).hasClass("resultstableitemb")) { $(row).removeClass("resultstableitema").removeClass("resultstableitemb"); if (index % 2) { $(row).addClass("resultstableitemb"); } else { $(row).addClass("resultstableitema"); } } table.append(row); }); }, _destroy: function () { this.element .removeCss("cursor"); } }); })(jQuery);
Thursday, 15 November 2012
Sort on Table Columns
Cannot remember if I found this or wrote it or a mix of the 2. I know it uses the JQuery UI Widget tempate so you will need to make sure to include that.
Thursday, 8 November 2012
Custom extensions that I use regularly
This is just a list of extensions that I use.
public static Guid ToGuid(this string stringValue)
{
try
{
return new Guid(stringValue);
}
catch (FormatException ex)
{
throw new FormatException("string could not convert to Guid");
}
catch (ArgumentNullException ex)
{
return Guid.Empty;
}
}
public static int ToInt32(this string stringValue)
{
if (string.IsNullOrEmpty(stringValue))
{
return -0;
}
else
{
return Convert.ToInt32(stringValue);
}
}
public static bool ToBoolean(this string stringValue)
{
if (string.IsNullOrEmpty(stringValue))
{
return false;
}
else
{
return Convert.ToBoolean(stringValue.ToInt32());
}
}
// dont really use this one, cannot guarentee that the lastname wasnt supposed to start with a lowercase
public static string ToProperCase(this string stringValue)
{
if (string.IsNullOrEmpty(stringValue))
{
return string.Empty;
}
else
{
var ti = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo;
return ti.ToTitleCase(stringValue.ToLower());
}
}
public static bool IsNull(this object o)
{
return o == null;
}
public static bool IsNotNull(this object o)
{
return !o.IsNull();
}
public static bool IsNullOrEmpty(this string s)
{
return string.IsNullOrEmpty(s);
}
public static bool IsNotNullOrEmpty(this string s)
{
return !string.IsNullOrEmpty(s);
}
public static string ToValidFileName(this string value)
{
return Regex.Replace(Regex.Replace(value, @"\W", "_"), "_{2,}", "_");
}
// this is a fun one, passing in a list of type T will generate a typed dataset
public static DataSet ToDataSet<T>(this IList<T> value)
{
if (value != null && value.Count > 0)
{
var type = typeof(T);
var properties = type.GetProperties();
ConstructorInfo ci = type.GetConstructor(new Type[] { });
T item = (T)ci.Invoke(new object[] { });
var ds = new DataSet();
var dt = new DataTable();
foreach (PropertyInfo property in properties)
{
var row = value.FirstOrDefault();
var dc = new DataColumn()
{
Caption = property.Name,
ColumnName = property.Name
};
if (row.IsNotNull())
{
var itemValue = property.GetValue(row, null);
if (itemValue.IsNotNull())
{
dc.DataType = itemValue.GetType();
}
}
dt.Columns.Add(dc);
}
foreach (T listItem in value)
{
var dr = dt.NewRow();
foreach (var property in properties)
{
var listItemValue = property.GetValue(listItem, null);
if(listItemValue != null)
{
dr[property.Name] = property.GetValue(listItem, null);
}
}
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
return ds;
}
else
{
return new DataSet();
}
}
Subscribe to:
Posts (Atom)