Пример #1
0
    /// <summary>
    /// 修改本地的一条kv数据,包括本地数据,及sql中的存储数据
    /// </summary>
    /// <param name="treeItemID">Tree item I.</param>
    /// <param name="index">这个kvdata数据在sql同时也是在数据dic中的index(kvdata.key在sql中的顺序位置)</param>
    /// <param name="key">Key.</param>
    /// <param name="value">Value.</param>
    /// <param name="type">数据编辑类型,或打开窗口类型</param>
    public void ModifyKVItem(string treeItemID, int index, string key, string value, string type)
    {
        //修改本地数据-------------------------------------
        if (KVDateDic.ContainsKey(treeItemID))
        {
            KVDateDic [treeItemID] [index].key   = key;
            KVDateDic [treeItemID] [index].value = value;
            KVDateDic [treeItemID] [index].type  = type;
        }
        else
        {
            //说明,这个函数OnDialogReturnValue是打开某一项TreeItem后再点击其中的KvItem才执行的,所以不可能出现在KVContainer中找不到当前TreeItem数据的情况
            Log.e("KVListItem", "OnDialogReturnValue", "KVContainer中不包含当前打开的dialog所处理的treeItem  TreeItemID:" + treeItemID, BeShowLog);
        }

        //修改sql数据-------------------------------------
        int    key_offset_inSql   = 0;
        int    _index             = (index * 3 + key_offset_inSql);
        string key_col_name_inSql = "line" + _index;        //这里这么写的原因可以参考SQLitHelper中对数据库设计的说明

        int value_offset_inSql = 1;

        _index = (index * 3 + value_offset_inSql);
        string value_col_name_inSql = "line" + _index;        //这里这么写的原因可以参考SQLitHelper中对数据库设计的说明

        int type_offset_inSql = 2;

        _index = (index * 3 + type_offset_inSql);
        string type_col_name_inSql = "line" + _index;        //这里这么写的原因可以参考SQLitHelper中对数据库设计的说明

        GEditorDataMgr.ModifyKVSqlData(Name, new string[] { key_col_name_inSql, value_col_name_inSql, type_col_name_inSql }, new string[] { key, value, type }, Convert.ToInt32(treeItemID));

        //修改ui,这里稍微有点浪费效率,整体都重新刷新了一便,但是不用重新开发功能,就这样
        RefreshKVListUI(KVDateDic[treeItemID]);
    }
Пример #2
0
    /// <summary>
    /// 利用剪切版里的数据新建一个Item
    /// 新建一个item
    /// 这里要注意的是创建的位置
    ///
    /// 当选择一个item并且黏贴时,是把剪切版中的item粘到这个选择item的前面
    /// 原因是如果是后面的化,那么folder下第一个位置永远不能被插入
    /// </summary>
    private void Paste()
    {
        //这里要判定黏贴板上是否有数据
        if (MyTreeContainer.CurCopyItem == null)
        {
            Log.i("TreeItem", "Paste", "黏贴的数据为null,不该出现的状态", BeShowLog);
            return;
        }

        //插入TreeItem项到指定位置
        var treeItem = InsertItem(IndexInParentFolder, MyTreeContainer.CurCopyItem.Name, ParentFolder, MyTreeContainer);

        treeItem.Icon       = MyTreeContainer.CurCopyItem.Icon;
        treeItem.TreeItemID = MyTreeContainer.CurCopyItem.TreeItemID;
        string _curCopyItemID = MyTreeContainer.CurCopyItem.TreeItemID;

        //如果数据来自剪切,就要清理原数据,如果来自复制,就要复制原数据(数据id如果不变,复制是没有意义的)

        //如果是剪切,要删除前一个状态
        if (MyTreeContainer.CurCopyItem.BeCut)
        {
            Log.i("TreeItem", "Paste", "开始黏贴", BeShowLog);
            MyTreeContainer.CurCopyItem.BeCut = false;
            MyTreeContainer.CurCopyItem.DelItem(false);
        }
        else        //如果是copy,要新生成sql数据,拿到ID,然后再插入数据
        {
            //NINFO nsql 这里是否也要向本地写数据
            //这里并不需要向本地Dic写入数据,只向sql写入数据即可,复制并没有把当前选中项置为 复制项,
            //当鼠标点击选中复制项时,选中逻辑自然会把sql数据导入本地
            Log.i("TreeItem", "Paste", "开始复制", BeShowLog);
            //step1 创建一个空的默认数据  新建sql并拿回新id
            string   kvType           = this.MyTreeContainer.Name;
            string[] _defaultDate     = GEditorConfig.GetKVDefaultValueData(kvType);
            string[] _fullDefaultDate = GEditorConfig.GetFullKVDefaultValueData(kvType, _defaultDate);

            int newID = GEditorDataMgr.CreateKVSqlData(kvType, _fullDefaultDate);
            treeItem.TreeItemID = newID.ToString();
            Log.i("TreeItem", "Paste", "新建数据完毕返回 newID:" + newID, BeShowLog);
            //step2 获取旧数据 根据treeItem.ID(被copy的那个item的sql数据id)查询copy的数据
            //string[] rowNames = GEditorConfig.GetKVRowNames(kvType);
            string[] copyDate = GEditorDataMgr.QueryKVSqlData(kvType /*,rowNames*/, Convert.ToInt32(_curCopyItemID));

            //step3 向新建的空位置添加旧数据,id使用新id
            copyDate[1] = newID.ToString();            //特别注意这里是第一个元素,不是第0个,可以参考SQLiteHelper4DataEditor的说明

            string[] Col_Names_InSql = SQLiteHelper4DataEditor.Get_Col_Names_InSql(kvType);
            GEditorDataMgr.ModifyKVSqlData(kvType, Col_Names_InSql, copyDate, newID);
        }

        //黏贴要要清理黏贴版,这里暂时逻辑为无论剪切还是复制,每到黏贴时都要清空剪贴板
        MyTreeContainer.CurCopyItem = null;

        Log.i("TreeItem", "Paste", "黏贴的item ID:" + treeItem.TreeItemID, BeShowLog);
    }
Пример #3
0
    /// <summary>
    /// 这里的黏贴是treeItme的黏贴,不存在文件夹整体黏贴的说法
    /// treefolder的黏贴跟TreeItem有些不同(除了这些不同其他都相同,跟treeitem paste的操作类似)
    /// treeItem是把黏贴项放到自己之前
    /// treefoler是把黏贴项放到自己内部所有元素之后
    /// </summary>
    public void Paste()
    {
        //这里要判定黏贴板上是否有数据
        if (MyTreeContainer.CurCopyItem == null)
        {
            Log.i("TreeItem", "Paste", "黏贴的数据为null,不该出现的状态", BeShowLog);
            return;
        }

        if (!BeFolderOpen)
        {
            OpenFolder();               //没打开的先打开再创建,否则位置错乱
        }
        //创建新位置的item的ui,ui节点名称与黏贴板上的一致
        var ti = TreeItem.Create(MyTreeContainer.CurCopyItem.Name, this, MyTreeContainer);

        //如果是剪切,要删除前一个状态
        if (MyTreeContainer.CurCopyItem.BeCut)
        {
            Log.i("TreeItem", "Paste", "开始黏贴", BeShowLog);
            MyTreeContainer.CurCopyItem.BeCut = false;
            MyTreeContainer.CurCopyItem.DelItem(false);
            ti.TreeItemID = MyTreeContainer.CurCopyItem.TreeItemID;//黏贴的话id保持不变
        }
        else//如果是copy,要新生成sql数据,拿到ID,然后再插入数据
        {
            //step1 创建一个空的默认数据  新建sql并拿回新id
            string   kvType           = this.MyTreeContainer.Name;
            string[] _defaultDate     = GEditorConfig.GetKVDefaultValueData(kvType);
            string[] _fullDefaultDate = GEditorConfig.GetFullKVDefaultValueData(kvType, _defaultDate);
            int      newID            = GEditorDataMgr.CreateKVSqlData(kvType, _fullDefaultDate);

            ti.TreeItemID = newID.ToString();
            Log.i("TreeFolder", "Paste", "新建数据完毕返回 newID:" + newID, BeShowLog);
            //step2 获取旧数据 根据treeItem.ID(被copy的那个item的sql数据id)查询copy的数据
            //string[] rowNames = GEditorConfig.GetKVRowNames(kvType);
            string[] copyDate = GEditorDataMgr.QueryKVSqlData(kvType /*,rowNames*/, Convert.ToInt32(MyTreeContainer.CurCopyItem.TreeItemID));

            //step3 向新建的空位置添加旧数据,id使用新id
            copyDate[1] = newID.ToString();//特别注意这里是第一个元素,不是第0个,可以参考SQLiteHelper4DataEditor的说明

            string[] Col_Names_InSql = SQLiteHelper4DataEditor.Get_Col_Names_InSql(kvType);

            GEditorDataMgr.ModifyKVSqlData(kvType, Col_Names_InSql, copyDate, newID);
        }
        //黏贴要要清理黏贴版,这里暂时逻辑为无论剪切还是复制,每到黏贴时都要请客剪贴板
        MyTreeContainer.CurCopyItem = null;

        Log.i("TreeItem", "Paste", "黏贴的item ID:" + ti.TreeItemID, BeShowLog);
    }
Пример #4
0
    void Update()
    {
//		if (Input.GetKeyUp (KeyCode.B)) {
//			sql.OpenConnection("data source= data/sqlite4unity.db");
//			sql.BeTableExist ("table1");
//			sql.CloseConnection();
//		}

        if (Input.GetKeyUp(KeyCode.S))
        {
            Debug.Log("Start");
            sql = SQLiteHelper.GetIns();
            sql.OpenConnection("data source= data/test.db");
        }

        if (Input.GetKeyUp(KeyCode.T))
        {
            //创建名为table1的数据表
            sql.CreateTable("table1", new string[] { "ID", "Name", "Email" }, new string[] { "INTEGER PRIMARY KEY", "TEXT", "TEXT" });
        }


        if (Input.GetKeyUp(KeyCode.N))
        {
            Debug.Log("End");
            sql.CloseConnection();
        }


        //测试新增一条数据
        if (Input.GetKeyUp(KeyCode.C))
        {
            Debug.Log("Create");

            string s = "name3333333";

            GEditorDataMgr.CreateKVSqlData("table1", new string[] { "null", s, "*****@*****.**" });
        }

        //测试查询
        if (Input.GetKeyUp(KeyCode.Q))
        {
            Debug.Log("Query");
            //GEditorDataMgr.QueryKVSqlData("table1",new string[]{"ID","Name","Email"},1);
        }

        //测试修改
        if (Input.GetKeyUp(KeyCode.M))
        {
            Debug.Log("Motify");
            GEditorDataMgr.ModifyKVSqlData("table1", new string[] { "Name" }, new string[] { "'f**k'" }, 1);
        }

        //测试删除
        if (Input.GetKeyUp(KeyCode.D))
        {
            Debug.Log("Del");
            GEditorDataMgr.DelKVSqlData("table1", 1);
        }

        //测试copy
//		if(Input.GetKeyUp(KeyCode.P))
//		{
//			Debug.Log ("Copy");
//			string s = "INSERT INTO table1 SELECT * FROM table1";
//			SQLiteHelper.GetIns ().ExecuteQuery (s);
//		}
    }