<pre name="code" class="csharp">/// <summary> ///GridPanelHelper
<span style="font-family: Arial, Helvetica, sans-serif;">///date:2014.7.22 by:wyl</span>
///GridPanel在我们系统中保存的是子表信息
/// </summary>
public class GridPanelHelper
{
/// <summary>
/// gridpanel 单元格双击事件
/// </summary>
public const string fn = "function(e){e.cancel=true;return false;}";
#region 保存GridPanel
/// <summary>
/// 保存gridpanel子表数据
/// </summary>
/// <param name="jsonData">子表Store的json数据</param>
/// <param name="store">子表store(Ext.Net.Store)</param>
/// <param name="tableName">子表名称</param>
/// <param name="parentID">父表记录的ID</param>
public static int SaveGridData(string jsonData, Ext.Net.Store store, string tableName, int parentID)
{
//反序列化得到JArray数组
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonData);
if (ja.Count <= 0)
{
return 0;
}
RecordFieldCollection RecordField = store.Reader[0].Fields;
string parentField = RecordField[0].Name; //父表记录的ID
string fields = parentField;//字段列表
string values = ""; //插入值列表
string sqlStr = "";
string selSql = "";
for (int i = 0; i < ja.Count; i++) //行循环
{
values = "'" + parentID.ToString() + "'"; //父表ID取参数传过来的,而不是json中的
for (int j = 1; j < RecordField.Count; j++) //列循环
{
if (i == 0) //只执行一次最外层循环
{
fields += "," + RecordField[j].Name;
}
//date:2014.7.22 by:wyl
if (ja[i][RecordField[j].Name] == null)
{
string str = " ";
values += "," + "'" + str + "'";
}
else
{
values += "," + "'" + ja[i][RecordField[j].Name].ToString() + "'";
}
}
selSql += "select " + values + " union all "; //构造select语句
}
sqlStr = string.Format(@"begin
delete from {0:g} where {1:g}={2:g};
insert into {0:g}({3:g}) {4:g} ;
end;", tableName, parentField, parentID, fields, selSql.Substring(0, selSql.Length - 10));
return Sunway.DBUtility.DbHelperSQL.ExecuteNonQuery(CommandType.Text, sqlStr, null);
}
/// <summary>
/// 保存gridpanel数据
/// </summary>
/// <param name="jsonData">Store的json数据</param>
/// <param name="store">gridpanel的store</param>
/// <param name="tableName">保存的表名称</param>
public static int SaveGridData(string jsonData, Store store, string tableName)
{
//用Newtonsoft.Json得到JArray数组
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonData);
RecordFieldCollection RecordField = store.Reader[0].Fields;
string fields = RecordField[0].Name;//字段列表
string values = ""; //插入值列表
string sqlStr = "";
string selSql = "";
string sqlStr1 = "";
string[] sqlArray;
for (int i = 0; i < ja.Count; i++)
{
values = "'" + ja[i][RecordField[0].Name].ToString() + "'";
for (int j = 1; j < RecordField.Count; j++)
{
if (i == 0)
{
fields += "," + RecordField[j].Name;
}
values += "," + "'" + ja[i][RecordField[j].Name].ToString() + "'";
}
selSql += "select " + values + " union all ";
}
sqlStr = string.Format("delete from {0:g}", tableName);
if (selSql != "")//grid没有记录时(可能内容全删除了,或是没填)
{
sqlStr1 = string.Format(@"insert into {0:g}({1:g}) {2:g} ", tableName, fields, selSql.Substring(0, selSql.Length - 10));
}
if (selSql == "")
{
return Sunway.DBUtility.DbHelperSQL.ExecuteNonQuery(CommandType.Text, sqlStr, null);
}
else
{
sqlArray = new string[] { selSql, selSql };
return TranHelp.ExecTran(sqlArray);
}
}
/// <summary>
/// 保存gridpanel子表(带触发器)
/// </summary>
/// <param name="jsonData">子表Store的json数据</param>
/// <param name="store">子表store(Ext.Net.Store)</param>
/// <param name="tableName">子表名称</param>
/// <param name="parentID">父表记录的ID</param>
/// <param name="isTrigger">是否带触发器</param>
public static int SaveGridData(string jsonData, Ext.Net.Store store, string tableName, int parentID, bool isTrigger)
{
int num = 0;
if (isTrigger == true)
{
//反序列化得到JArray数组
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonData);
RecordFieldCollection RecordField = store.Reader[0].Fields;
string parentField = RecordField[0].Name; //父表记录的ID
string fields = parentField;//字段列表
string values = ""; //插入值列表
string sqlStr = "";
string insSql = "";
for (int i = 0; i < ja.Count; i++) //行循环
{
values = "'" + parentID.ToString() + "'";
for (int j = 1; j < RecordField.Count; j++) //列循环
{
if (i == 0) //只执行一次最外层循环
{
fields += "," + RecordField[j].Name;
}
values += "," + "'" + ja[i][RecordField[j].Name].ToString() + "'";
}
insSql += string.Format("insert into {0:g}({1:g}) values({2:g});", tableName, fields, values); //构造Insert语句
}
sqlStr = string.Format(@"begin
delete from {0:g} where {1:g}={2:g};
{3:g}
end;", tableName, parentField, parentID, insSql);
try
{
num = Sunway.DBUtility.DbHelperSQL.ExecuteNonQuery(CommandType.Text, sqlStr, null);
}
catch (Exception)
{
num = -1;
}
}
return num;
}
/// <summary>
/// 保存grid行
/// </summary>
/// <param name="jsonData"></param>
/// <param name="store"></param>
/// <param name="tableName"></param>
/// <param name="parentID"></param>
/// <returns></returns>
public static int SaveGridRow(string jsonData, Ext.Net.Store store, string tableName, string parentID)
{
//反序列化得到JArray数组
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonData);
RecordFieldCollection RecordField = store.Reader[0].Fields;
string parentField = RecordField[0].Name; //父表记录的ID
string fields = "";//字段列表
string values = ""; //插入值列表
string sqlStr = "";
string insSql = "";
for (int j = 1; j < RecordField.Count; j++) //列循环
{
fields += RecordField[j].Name+",";
values += "'"+ja[0][RecordField[j].Name].ToString() + "',";
}
insSql += string.Format("insert into {0:g}({1:g}) values({2:g});", tableName, fields.Substring(0,fields.Length-1), values.Substring(0,values.Length-1)); //构造Insert语句
if (parentID != "")
{
sqlStr = string.Format(@"begin
delete from {0:g} where {1:g}={2:g};{3:g}
end;", tableName, parentField, parentID, insSql);
}
else
{
sqlStr = insSql;
}
return Sunway.DBUtility.DbHelperSQL.ExecuteNonQuery(CommandType.Text, sqlStr, null);
}
#endregion
#region 导入Excel
/// <summary>
/// 导入Excel到GridPanel,应用com组件
/// </summary>
/// <param name="filenameurl">物理路径</param>
/// <param name="sheetIndex">sheet名称的索引</param>
/// <returns></returns>
public static void ImpExecleToGrid(string filenameurl, GridPanel grd)
{
int sheetIndex = 1;//sheet名称的索引
Microsoft.Office.Interop.Excel.Workbook wb = null;
Microsoft.Office.Interop.Excel.Worksheet ws = null;
ArrayList columnArr = new ArrayList();//列字段表
DataSet myDs = new DataSet();
DataTable xlsTable = myDs.Tables.Add("show");
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
if (excel != null)
{
excel.Visible = false;
excel.UserControl = true;
// 以只读的形式打开EXCEL文件
wb = excel.Workbooks.Open(filenameurl, missing, true, missing, missing, missing,
missing, missing, missing, true, missing, missing, missing, missing, missing);
//取得第一个工作薄
ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets.get_Item(sheetIndex);
//取得总记录行数(包括标题列)
int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
int columnsint = ws.UsedRange.Cells.Columns.Count;//得到列数
DataRow dr;
string colName = "";
for (int i = 1; i < columnsint; i++)
{
colName = ((Microsoft.Office.Interop.Excel.Range)ws.Cells[1, i]).Text.ToString();
if (grd.ColumnModel.Columns[i].Header == colName)
{
xlsTable.Columns.Add(grd.ColumnModel.Columns[i].DataIndex, typeof(string));
columnArr.Add(grd.ColumnModel.Columns[i].DataIndex);
}
}
for (int i = 2; i <= rowsint; i++)
{
dr = xlsTable.NewRow();
for (int j = 1; j < columnsint; j++)
{
dr[columnArr[j - 1].ToString()] = ((Microsoft.Office.Interop.Excel.Range)ws.Cells[i, j]).Text.ToString();
}
xlsTable.Rows.Add(dr);
}
}
excel.Quit();
excel = null;
//Dispose(ws, wb);
GC.Collect();
grd.Store[0].DataSource = xlsTable;
grd.Store[0].DataBind();
}
#endregion
/// <summary>
/// 设置列是否可修改
/// </summary>
/// <param name="cm">ColumnModel</param>
/// <param name="isEditable"></param>
public static void SetColumnsEditable(ColumnModel cm,bool isEditable)
{
for (int i = 0; i < cm.Columns.Count; i++)
{
cm.SetEditable(i, isEditable);
}
}
public static void SaveStore(Store st, string ID)
{
}
}
原文地址:http://blog.csdn.net/wyl900606/article/details/44702377