GridView的代码转换成名字(通用) 1、----Class using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using Microsoft.Practices.EnterpriseLibrary.Common; using Microsoft.Practices.EnterpriseLibrary.Data; using Microsoft.Practices.ObjectBuilder; using System.Data.Common; using System.Collections; using FIH; /// <summary> /// CodeToName 的摘要说明 /// </summary> public class CodeToName { /// <summary> /// 为了将代码转换成名称,给指定的DataTable实例增加执行行。参数:指定的DataTable实例,表代码列,表名称列,表名,表代码的值。 /// </summary> public static void DataTableAddRow(DataTable RefDataTable, string RefCode, string RefName, string RefTable, string RefCodeValue) { if (RefDataTable.Rows.Count == 0) { RefDataTable.Columns.Add(new DataColumn("paramName", typeof(string))); RefDataTable.Columns.Add(new DataColumn("paramValue", typeof(string))); RefDataTable.Columns.Add(new DataColumn("SQL", typeof(string))); } DataRow myDataRow = RefDataTable.NewRow(); //第0列:paramName myDataRow["paramName"] = "@paramName" + RefDataTable.Rows.Count; string strQuery = "(select cast(" + RefCode + " as nvarchar(40)) as myColCode, " + " cast(" + RefName + " as nvarchar(40)) as myColName, " + " '" + RefTable + "' as MyColTable " + " from " + RefTable + " where " + RefCode + " = " + myDataRow[0] + ")"; //第1列:paramValue myDataRow["paramValue"] = RefCodeValue; //第2列:SQL myDataRow["SQL"] = strQuery; //增加一行 RefDataTable.Rows.Add(myDataRow); } /// <summary> /// 为了将代码转换成名称,获取指定的DataTable实例的执行结果。参数:指定的DataTable实例。 /// </summary> public static DataTable CodeToNameDT(DataTable RefDataTable) { //得到SQL语句 string strQuery = ""; for (int i = 0; i < RefDataTable.Rows.Count; i++) { if (strQuery.Trim().Length > 1) { strQuery += " union " ; } strQuery += RefDataTable.Rows[i]["SQL"].ToString(); } //定义返回值 DataTable returntDataTable = new DataTable(); if (strQuery.Length > 1) { Database db = DatabaseFactory.CreateDatabase(); DbCommand myDbCommand = db.GetSqlStringCommand(strQuery); //给参数赋值 for (int i = 0; i < RefDataTable.Rows.Count; i++) { string paramName = "@paramName" + i.ToString(); db.AddInParameter(myDbCommand, paramName, DbType.String, RefDataTable.Rows[i]["paramValue"].ToString()); } //得到返回值 returntDataTable = db.ExecuteDataSet(myDbCommand).Tables[0]; } return returntDataTable; } /// <summary> /// 将代码转换成名称。参数:表代码列,表名称列,表名,表代码的值。 /// </summary> public static string CodeToNameSingle(string RefCode, string RefName, string RefTable, string RefCodeValue) { string strQuery = "select " + RefName + " from " + RefTable + " where " + RefCode + " = @paramName"; Database db = DatabaseFactory.CreateDatabase(); DbCommand myDbCommand = db.GetSqlStringCommand(strQuery); //给参数赋值 db.AddInParameter(myDbCommand, "@paramName", DbType.String, RefCodeValue); //定义返回值 DataTable returntDataTable = new DataTable(); returntDataTable = db.ExecuteDataSet(myDbCommand).Tables[0]; string strReturn = ""; if (returntDataTable.Rows.Count > 0) { strReturn =returntDataTable.Rows[0][0].ToString(); } return strReturn; } } 2、 页面GridView 事件 protected void gvMainList_DataBound(object sender, EventArgs e) { #region 列转换 //用来存放代码转名称的数据集和 DataTable sqlDataTable = new DataTable(); DataTable codeNameDataTable = new DataTable(); //需要转换的Label Label lbPayStatusCode, lbPayTypeCode; //读取gvMainList的每一行 for (int i = 0; i < gvMainList.Rows.Count; i++) { lbPayTypeCode = (Label)gvMainList.Rows[i].FindControl("lbPayTypeCode"); lbPayStatusCode = (Label)gvMainList.Rows[i].FindControl("lbPayStatusCode"); CodeToName.DataTableAddRow(sqlDataTable, "PayTypeCode", "PayTypeName", "BasePayType", lbPayTypeCode.Text.Trim()); CodeToName.DataTableAddRow(sqlDataTable, "PayStatusCode", "PayStatusName", "BasePayStatus", lbPayStatusCode.Text.Trim()); } //得到执行结果(只访问DB一次) codeNameDataTable = CodeToName.CodeToNameDT(sqlDataTable); //读取gvMainList的没一行 for (int i = 0; i < gvMainList.Rows.Count; i++) { //把代码转换成名字 lbPayTypeCode = (Label)gvMainList.Rows[i].FindControl("lbPayTypeCode"); lbPayStatusCode = (Label)gvMainList.Rows[i].FindControl("lbPayStatusCode"); for (int j = 0; j < codeNameDataTable.Rows.Count; j++) { if ((codeNameDataTable.Rows[j]["myColCode"].ToString() == lbPayTypeCode.Text) && (codeNameDataTable.Rows[j]["MyColTable"].ToString() == "BasePayType")) { lbPayTypeCode.Text = codeNameDataTable.Rows[j]["myColName"].ToString(); } if ((codeNameDataTable.Rows[j]["myColCode"].ToString() == lbPayStatusCode.Text) && (codeNameDataTable.Rows[j]["MyColTable"].ToString() == "BasePayStatus")) { lbPayStatusCode.Text = codeNameDataTable.Rows[j]["myColName"].ToString(); } } } # endregion }