近来开发的所学到的如下:
0、jQuery与Autocomplete插件
1.1、将枚举转为string[]
private enum MyEnum
{A,B,C}
string[] var = Enum.GetNames(typeof(MyEnum)); // "A""B""C"的数组
string var2 = MyEnum.A.ToString(); //"A"
1.2、将string[]转成enum
Aircraft air = (Aircraft) Enum.Parse(typeof(Aircraft), "A,B,C", true);
2、自定义控件之下拉式属性显示:
[TypeConverter(typeof(ModuleConverter))]
public string Module{get{}set{}}
public string Module{get{}set{}}
#region TypeConverter
public class DataSourceTypeConverter : StringConverter
{
StandardValuesCollection theValue = new StandardValuesCollection(Enum.GetNames(typeof(Enums.EnumDataSource)));
//这一个override说明要用下拉列表编辑属性
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
//这个override返回下拉列表项
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
return theValue;
}
//return ture的话属性只能选,return false 属性可选可填
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
public class DataSourceTypeConverter : StringConverter
{
StandardValuesCollection theValue = new StandardValuesCollection(Enum.GetNames(typeof(Enums.EnumDataSource)));
//这一个override说明要用下拉列表编辑属性
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
//这个override返回下拉列表项
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
return theValue;
}
//return ture的话属性只能选,return false 属性可选可填
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
4、判断字符串拼接成的方法名是否存在
//一般来说 if (typeof(functionName) == "function") 就可,若是拼接成的呢?
//在IE和FF下试过均OK
if ("functionName"in Window) {}
5、Javascript格式化字符串的方法(有修改)
var format = function (number, form) {
var forms = form.split('.'), number = '' + number, numbers = number.split('.')
, leftnumber = numbers[0].split('')
, exec = function (lastMatch) {
if (lastMatch == '0' || lastMatch == '#') {
if (leftnumber.length) {
return leftnumber.pop();
} else if (lastMatch == '0') {
return lastMatch;
} else {
return '';
}
} else {
return lastMatch;
}
}, string
string = forms[0].split('').reverse().join('').replace(/./g, exec).split('').reverse().join('');
string = leftnumber.join('') + string;
if (forms[1] && forms[1].length) {
leftnumber = (numbers[1] && numbers[1].length) ? numbers[1].split('').reverse() : [];
string += '.' + forms[1].replace(/./g, exec);
}
var ret = string.replace(/\.$/, '');
//Modified, debugger;
var i = 0;
var j = 0;
while (i == 0 && j<10){
j++;
i = ret.indexOf(',');
ret = ret.substring(i+1,ret.length);
i = ret.indexOf(',');
}
return ret;
};
// 使用时 format("12345678901","###,###,###,###,###,###.00");
<script language="javascript" type="text/javascript" src="../Js/StringFormat.js"></script>
<script language="javascript" type="text/javascript">
function $(value) { return document.getElementById(value);}
function CalculateTotal(){
var fmt = "###,###,###,###,###,###.00";
var gridID = "<%=POReleaseGridView.ClientID %>";
var lblGrandTotal = $("ClientSpan");
var tblPO = $(gridID);
var rowCount = tblPO.rows.length;
// ctl00_mdcmContentPlaceHolder_POReleaseGridView_ctl02_QtyTextBox
// ctl00_mdcmContentPlaceHolder_POReleaseGridView_ctl02_UsePremiumRadioButtonList_0
var rowID = "";
var Qty;
var UnitPrice;
var PreCharge;
var cbPremiumYes;
var cbPremiumNo;
var lblTotal;
var calTotal = 0;
// formula:
// if preCharge enabled and if preCharge larger than 100: ( qty * price ) * ( preCharge / 100 );
// else qty * price
for (var i = 0; i < rowCount; i++){
rowID = gridID + "_ctl" + ((i <= 9)? "0" + i : i);
if (i < 2 || i >= rowCount) {continue;}
// Get the controls relavent with total
Qty = getNum($(rowID + "_QtyTextBox"));
UnitPrice = getNum($(rowID + "_unitPriceTextBox"));
PreCharge = getNum($(rowID + "_PremiumTextBox"));
lblPreCharge = $(rowID + "_PremiumTextBox");
cbPremiumYes = $(rowID + "_UsePremiumRadioButtonList_0");
cbPremiumNo = $(rowID + "_UsePremiumRadioButtonList_1");
lblTotal = $(rowID + "_TotalLabel");
// ===
var tmp = Qty * UnitPrice;
if (cbPremiumYes.checked && PreCharge > 100){
tmp = tmp * (PreCharge / 100);
}
lblTotal.innerHTML = format(tmp, fmt);
calTotal += tmp;
}
lblGrandTotal.innerHTML = format(calTotal, fmt);
}
function getNum(ctrl){
return (ctrl.value == "" ? 0 : parseFloat(ctrl.value));
}
</script>
var forms = form.split('.'), number = '' + number, numbers = number.split('.')
, leftnumber = numbers[0].split('')
, exec = function (lastMatch) {
if (lastMatch == '0' || lastMatch == '#') {
if (leftnumber.length) {
return leftnumber.pop();
} else if (lastMatch == '0') {
return lastMatch;
} else {
return '';
}
} else {
return lastMatch;
}
}, string
string = forms[0].split('').reverse().join('').replace(/./g, exec).split('').reverse().join('');
string = leftnumber.join('') + string;
if (forms[1] && forms[1].length) {
leftnumber = (numbers[1] && numbers[1].length) ? numbers[1].split('').reverse() : [];
string += '.' + forms[1].replace(/./g, exec);
}
var ret = string.replace(/\.$/, '');
//Modified, debugger;
var i = 0;
var j = 0;
while (i == 0 && j<10){
j++;
i = ret.indexOf(',');
ret = ret.substring(i+1,ret.length);
i = ret.indexOf(',');
}
return ret;
};
// 使用时 format("12345678901","###,###,###,###,###,###.00");
<script language="javascript" type="text/javascript" src="../Js/StringFormat.js"></script>
<script language="javascript" type="text/javascript">
function $(value) { return document.getElementById(value);}
function CalculateTotal(){
var fmt = "###,###,###,###,###,###.00";
var gridID = "<%=POReleaseGridView.ClientID %>";
var lblGrandTotal = $("ClientSpan");
var tblPO = $(gridID);
var rowCount = tblPO.rows.length;
// ctl00_mdcmContentPlaceHolder_POReleaseGridView_ctl02_QtyTextBox
// ctl00_mdcmContentPlaceHolder_POReleaseGridView_ctl02_UsePremiumRadioButtonList_0
var rowID = "";
var Qty;
var UnitPrice;
var PreCharge;
var cbPremiumYes;
var cbPremiumNo;
var lblTotal;
var calTotal = 0;
// formula:
// if preCharge enabled and if preCharge larger than 100: ( qty * price ) * ( preCharge / 100 );
// else qty * price
for (var i = 0; i < rowCount; i++){
rowID = gridID + "_ctl" + ((i <= 9)? "0" + i : i);
if (i < 2 || i >= rowCount) {continue;}
// Get the controls relavent with total
Qty = getNum($(rowID + "_QtyTextBox"));
UnitPrice = getNum($(rowID + "_unitPriceTextBox"));
PreCharge = getNum($(rowID + "_PremiumTextBox"));
lblPreCharge = $(rowID + "_PremiumTextBox");
cbPremiumYes = $(rowID + "_UsePremiumRadioButtonList_0");
cbPremiumNo = $(rowID + "_UsePremiumRadioButtonList_1");
lblTotal = $(rowID + "_TotalLabel");
// ===
var tmp = Qty * UnitPrice;
if (cbPremiumYes.checked && PreCharge > 100){
tmp = tmp * (PreCharge / 100);
}
lblTotal.innerHTML = format(tmp, fmt);
calTotal += tmp;
}
lblGrandTotal.innerHTML = format(calTotal, fmt);
}
function getNum(ctrl){
return (ctrl.value == "" ? 0 : parseFloat(ctrl.value));
}
</script>