码迷,mamicode.com
首页 > Web开发 > 详细

ext.net GridPanelHelper

时间:2015-03-28 17:23:27      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:ext.net   gridpanel   json   

<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)
    { 

    }
}


ext.net GridPanelHelper

标签:ext.net   gridpanel   json   

原文地址:http://blog.csdn.net/wyl900606/article/details/44702377

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!