?? commonservice.cs
字號(hào):
}
else if(DataTypes[i]=="short")
{
types[i+1] = typeof(short);
}
else if(DataTypes[i]=="bool")
{
types[i+1] = typeof(bool);
}
else if(DataTypes[i]=="decimal")
{
types[i+1] = typeof(decimal);
}
else if(DataTypes[i]=="double")
{
types[i+1] = typeof(double);
}
else if(DataTypes[i]=="DateTime")
{
types[i+1] = typeof(DateTime);
}
else
{
return null;
}
}
return types;
}
catch(Exception e)
{
LogService.Write("public static Type[] ConvertDataType(SqlConnection SqlCn, string[] DataTypes)");
LogService.Write(e.Message);
return null;
}
}
/// **************************************************************************
/// END
/// **************************************************************************
/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根據(jù)不同的刪除方法進(jìn)行不同的調(diào)用,對(duì)選中的數(shù)據(jù)進(jìn)行刪除(三期新版本)
/// </summary>
/// <param name="thePage">調(diào)用此方法的頁面對(duì)象</param>
/// <param name="theDG">存儲(chǔ)數(shù)據(jù)的DataGrid控件對(duì)象</param>
/// <param name="sql">刪除之后重新綁定數(shù)據(jù)時(shí)所用的SQL語句,用ViewState["sql"].ToString()作為參數(shù)即可</param>
/// <param name="SessionName">用于和服務(wù)器進(jìn)行交互的Session名稱,建議使用"Data"和"Data1"兩者中的一個(gè)</param>
/// <param name="CheckBoxName">存儲(chǔ)選中標(biāo)志的CheckBox控件的ID</param>
/// <param name="DataTypes">主關(guān)鍵字列表的數(shù)據(jù)類型組成的字符型數(shù)組,一定要按刪除方法的參數(shù)的先后順序排列</param>
/// <param name="Pk">存儲(chǔ)主關(guān)鍵字的Hidden控件對(duì)象名組成的字符型數(shù)組,一定要按刪除方法的參數(shù)的先后順序排列</param>
/// <param name="ClassName">定義刪除方法的類名稱(需要給出完整路徑)</param>
/// <param name="MethodName">刪除方法的名稱</param>
/// <param name="ErrorMessage">出錯(cuò)信息文本</param>
/// <returns>布爾型返回值,成功執(zhí)行返回true,發(fā)生錯(cuò)誤返回false</returns>
/// **************************************************************************
public static bool DelSelectRecord( System.Web.UI.Page thePage,
System.Web.UI.WebControls.DataGrid theDG,
string sql,
string SessionName,
string CheckBoxName,
string[] DataTypes,
string[] Pk,
string ClassName,
string MethodName,
string ErrorMessage)
{
//獲取當(dāng)前的流程ID(FlowId)
string FlowId = "";
//打開數(shù)據(jù)庫連接
SqlConnection SqlCn = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());
SqlCn.Open();
SqlCommand cmd = SqlCn.CreateCommand();
try
{
//開始事務(wù)
SqlTransaction SqlTrans = SqlCn.BeginTransaction();
cmd.Transaction = SqlTrans;
//聲明存儲(chǔ)主關(guān)鍵字的變量
object[] obj = new object[DataTypes.Length];
//對(duì)本頁上DataGrid的所有行進(jìn)行遍歷
for (int i=0; i<theDG.Items.Count; i++)
{
//將當(dāng)前行賦值給一個(gè)DataGridItem對(duì)象
DataGridItem _item = theDG.Items[i];
//判斷當(dāng)前行上的CheckBox控件賦值給一個(gè)CheckBox對(duì)象
CheckBox CheckFlag = (CheckBox)_item.FindControl(CheckBoxName);
//判斷當(dāng)前行上的復(fù)選框是否被選中,如果被選中則進(jìn)行刪除處理,否則不予處理
if(CheckFlag.Checked == true)
{
//獲取關(guān)鍵字的值,逐個(gè)加入對(duì)象數(shù)組obj
for (int j=0; j<Pk.Length; j++)
{
obj[j] = ((System.Web.UI.HtmlControls.HtmlInputHidden)_item.FindControl(Pk[j].ToString())).Value; //取各項(xiàng)主關(guān)鍵字
}
//調(diào)用刪除方法進(jìn)行刪除處理,如果沒有成功刪除則回滾事務(wù)并打開錯(cuò)誤提示頁面
if(Reflection(ClassName, MethodName, DataTypes, obj, cmd) == false)
{
SqlTrans.Rollback();
//打開錯(cuò)誤信息提示頁面
Prompt.PromptError(thePage, ErrorMessage);
return false;
}
}
}
//提交數(shù)據(jù)庫修改
SqlTrans.Commit();
//重新綁定DataGrid控件
if(CommonService.BindDataGrid(thePage,sql,theDG,SessionName,true) == false)
{
//打開錯(cuò)誤信息提示頁面
Prompt.PromptError(thePage, "已經(jīng)成功刪除選定的數(shù)據(jù),但在重新綁定數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤。");
return false;
}
else
{
//判斷此記錄是否在某工作流中
FlowId = thePage.Request.QueryString["flowid"];
//LogService.Write("現(xiàn)在要?jiǎng)h除的流程ID:" + FlowId);
if (FlowId != null)
{
WorkflowMgr wMgr = new WorkflowMgr();
wMgr.DelMessage(FlowId);
thePage.Response.Write("<script>");
thePage.Response.Write("window.parent.refreshOpener();");
thePage.Response.Write("window.parent.close();");
thePage.Response.Write("</script>");
}
}
return true;
}
catch(Exception e)
{
//打開錯(cuò)誤信息提示頁面
Prompt.PromptError(thePage, ErrorMessage);
LogService.Write(e.Message);
return false;
}
finally
{
SqlCn.Close();
}
}
/// **************************************************************************
/// END
/// **************************************************************************
/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根據(jù)不同的情況調(diào)用不同的刪除方法(三期新版本)
/// </summary>
/// <param name="ClassName">定義該刪除方法的類名</param>
/// <param name="MethodName">刪除方法名</param>
/// <param name="DataType">主關(guān)鍵字字段數(shù)據(jù)類型組成的數(shù)組</param>
/// <param name="pk">主關(guān)鍵字字段組成的數(shù)組</param>
/// <param name="SqlCmd">SqlCommand對(duì)象</param>
/// <returns>布爾型返回值,成功執(zhí)行返回true,發(fā)生錯(cuò)誤返回false</returns>
/// **************************************************************************
public static bool Reflection(string ClassName, string MethodName, string[] DataTypes, object[] pk, SqlCommand SqlCmd)
{
//刪除SqlCommand對(duì)象的所有參數(shù)
SqlCmd.Parameters.Clear();
try
{
Assembly[] asm = AppDomain.CurrentDomain.GetAssemblies();
Type t=null;
int i=0;
do
{
t = asm[i].GetType(ClassName);
i++;
} while (t == null && i<asm.Length);
object obj = Activator.CreateInstance(t);
//將傳入的數(shù)據(jù)類型字符串轉(zhuǎn)化為數(shù)據(jù)類型數(shù)組
Type[] types = ConvertDataType(SqlCmd, DataTypes);
//根據(jù)方法名和數(shù)據(jù)類型數(shù)組獲取方法
MethodInfo m = t.GetMethod(MethodName,types);
//根據(jù)數(shù)據(jù)類型轉(zhuǎn)化數(shù)據(jù)
object[] aryObj = ConvertData(SqlCmd, DataTypes, pk);
//如果轉(zhuǎn)化成功則調(diào)用查找到的方法執(zhí)行
if (aryObj == null)
{
LogService.Write("public static bool reflection(string ClassName, string MethodName, string[] DataType, object[] pk)");
LogService.Write("對(duì)主關(guān)鍵字進(jìn)行特定數(shù)據(jù)類型轉(zhuǎn)換的操作不成功。");
return false;
}
else
{
object result = m.Invoke(obj,aryObj);
return (bool)result;
}
}
catch(Exception e)
{
LogService.Write("public static bool Reflection(string ClassName, string MethodName, string[] DataTypes, object[] pk)");
LogService.Write("反射函數(shù)執(zhí)行失敗。ClassName:" + ClassName + "; MethodName:" + MethodName);
LogService.Write(e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************
/// **************************************************************************
/// BEIGIN
/// <summary>
/// 將對(duì)象數(shù)組按照給定的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換(三期新版本)
/// </summary>
/// <param name="SqlCmd">SqlCommand對(duì)象</param>
/// <param name="DataType">對(duì)象數(shù)組對(duì)應(yīng)的數(shù)據(jù)類型數(shù)組</param>
/// <param name="pk">主關(guān)鍵字字段組成的數(shù)組</param>
/// <returns>返回轉(zhuǎn)化后的對(duì)象數(shù)組</returns>
/// **************************************************************************
public static object[] ConvertData(SqlCommand SqlCmd, string[] DataType, object[] pk)
{
try
{
object[] obj = new object[DataType.Length + 1];
obj[0] = SqlCmd;
for(int i=0; i<DataType.Length; i++)
{
if (DataType[i].ToLower() == "int") //整型
{
obj[i+1] = int.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "double") //雙精度浮點(diǎn)型
{
obj[i+1] = double.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "datetime") //日期型
{
obj[i+1] = System.DateTime.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "float") //單精度浮點(diǎn)型
{
obj[i+1] = float.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "decimal") //十進(jìn)制小數(shù)型
{
obj[i+1] = decimal.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "long") //長(zhǎng)整型
{
obj[i+1] = long.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "short") //短整型
{
obj[i+1] = short.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "bool") //布爾型
{
obj[i+1] = bool.Parse(pk[i].ToString());
}
else //不處理
{
obj[i+1] = pk[i].ToString();
}
}
return obj;
}
catch(Exception e)
{
LogService.Write("public static void ConvertDataType(SqlConnection SqlCmd, string[] DataType, object[] pk)");
LogService.Write(e.Message);
return null;
}
}
/// **************************************************************************
/// END
/// **************************************************************************
/// **************************************************************************
/// BEIGIN
/// <summary>
/// 將數(shù)據(jù)類型名稱數(shù)組轉(zhuǎn)化為數(shù)據(jù)類型數(shù)組(三期新版本)
/// </summary>
/// <param name="SqlCmd">SqlCommand對(duì)象</param>
/// <param name="DataTypes">數(shù)據(jù)類型名稱數(shù)組</param>
/// <returns></returns>
/// **************************************************************************
public static Type[] ConvertDataType(SqlCommand SqlCmd, string[] DataTypes)
{
try
{
Type[] types = new Type[DataTypes.Length + 1];
types[0] = typeof(SqlCommand);
for(int i=0; i<DataTypes.Length; i++)
{
if(DataTypes[i]=="int")
{
types[i+1] = typeof(int);
}
else if(DataTypes[i]=="string")
{
types[i+1] = typeof(string);
}
else if(DataTypes[i]=="float")
{
types[i+1] = typeof(float);
}
else if(DataTypes[i]=="long")
{
types[i+1] = typeof(long);
}
else if(DataTypes[i]=="short")
{
types[i+1] = typeof(short);
}
else if(DataTypes[i]=="bool")
{
types[i+1] = typeof(bool);
}
else if(DataTypes[i]=="decimal")
{
types[i+1] = typeof(decimal);
}
else if(DataTypes[i]=="double")
{
types[i+1] = typeof(double);
}
else if(DataTypes[i]=="DateTime")
{
types[i+1] = typeof(DateTime);
}
else
{
return null;
}
}
return types;
}
catch(Exception e)
{
LogService.Write("public static Type[] ConvertDataType(SqlCommand SqlCmd, string[] DataTypes)");
LogService.Write(e.Message);
return null;
}
}
/// **************************************************************************
/// END
/// **************************************************************************
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
//以下是對(duì)子窗口的處理方法集
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
/// **************************************************************************
/// BEIGIN
/// <summary>
/// 通過父頁面的URL獲得主關(guān)鍵字
/// </summary>
/// <param name="thePage">調(diào)用此方法的Web頁面對(duì)象</param>
/// <returns>主關(guān)鍵字?jǐn)?shù)組</returns>
/// **************************************************************************
public static string[] GetPks(System.Web.UI.Page thePage)
{
//獲得父頁面的完整URL并通過“|”進(jìn)行分解
string[] pks = thePage.Request.QueryString["ParentURL"].Split('|');
//將分解后的字符串進(jìn)行處理,獲得主關(guān)鍵字?jǐn)?shù)組
for (int i=0; i<pks.Length; i++)
{
pks[i] = pks[i].Substring(pks[i].LastIndexOf("=") + 1);
}
return pks;
}
/// **************************************************************************
/// END
/// **************************************************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -