jQuery MiniUI

 找回密码
 立即注册
查看: 7862|回复: 14
打印 上一主题 下一主题

为什么我获取不到tree的id,报错:未将实例引用到对象 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-8-10 18:12:29 |只看该作者 |倒序浏览
本帖最后由 xiejunli 于 2017-8-10 18:13 编辑

获取tree的id,根据id把数据显示到treegrid里,有思路但实现不来,求具体代码  谢谢各位啦数据传递就和三层顺序一致,
1.DAL
public DataTable GetTreeGrid(Hashtable data)
        {
            string sorttext=string.Empty;
            sorttext = "MenuID ASC";
            StringBuilder steWhere=new StringBuilder();
            if (!string.IsNullOrEmpty(data["ID"].ToString()))//判断指定的字符串是null还是字符串
            {
                steWhere.Append("and AppID=@ID");//1
            }
            string sql = @"select MenuID as id,MenuName as text,AppID,ParentID from S_Menu where 1=1" + steWhere.ToString();
            SqlParameter[] parameters ={
                                          new SqlParameter("@ID",SqlDbType.Int,4)//里面的参数要和1处保持一致
                                      };
            parameters[0].Value = Util.StrToInt(data["ID"].ToString(), 0);
            return DbHelperSQL.Query(sql, parameters).Tables[0];
        }


2.中转站
public void getTreeGrid()
        {
            string json = string.Empty;
            String submitJSON = RequestHelper.GetString("ID");
            Hashtable data = new Hashtable();
            if (!string.IsNullOrEmpty(submitJSON))
            {
                data = JSON.JsonDecode(submitJSON);
                DataTable dt = new Learn.BLL.S_Menu().GetTreeGrid(data);
                json = JSON.DataTableToJSON(dt);
            }
            Response.Write(json);
        }

3.页面
div:tree
div:treegrid  属性:onNodesSelect="nodeselect"
<script>
......
tree.on("nodeselect", function (e) {
            var id = e.node.id;
            grid.load({ ID: id });
        });

</script>

sqlserver表:AppID=MenuID时表示为该节点下的,ParentID代表父节点


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

沙发
发表于 2017-8-11 09:30:06 |只看该作者
你这里是什么问题?
你的tree有数据有id字段吗?
可以参考一下我们树形联动的示例
http://www.miniui.com/demo/#src=tree/detailgrid.html

Rank: 2

板凳
发表于 2017-8-11 10:38:06 |只看该作者
dforce 发表于 2017-8-11 09:30
你这里是什么问题?
你的tree有数据有id字段吗?
可以参考一下我们树形联动的示例

恩恩,数据已经出来了,但是显示的数据就和datagrid一样并不是树状结构啊,为什么treegrid不能自动生成树状结构啊,如果我用递归算法的话吗,怎么写啊

Rank: 8Rank: 8

地板
发表于 2017-8-11 10:45:43 |只看该作者
xiejunli 发表于 2017-8-11 10:38
恩恩,数据已经出来了,但是显示的数据就和datagrid一样并不是树状结构啊,为什么treegrid不能自动生成树 ...

1 看你数据有没有父子关系
2 treegrid需要专门设置一下节点列,treeColumn="指定一列的name“
http://www.miniui.com/demo/#src=treegrid/treegrid.html
可以看一下我们示例里面的设置。

Rank: 2

5#
发表于 2017-8-11 10:53:55 |只看该作者
dforce 发表于 2017-8-11 10:45
1 看你数据有没有父子关系
2 treegrid需要专门设置一下节点列,treeColumn="指定一列的name“
http://www ...

有父子关系,我也设置了节点列,但出来的数据还是和表格一样,而不是上下级的树状结构

Rank: 2

6#
发表于 2017-8-11 10:57:04 |只看该作者
本帖最后由 xiejunli 于 2017-8-11 10:58 编辑
xiejunli 发表于 2017-8-11 10:53
有父子关系,我也设置了节点列,但出来的数据还是和表格一样,而不是上下级的树状结构
...


这个还是像表格一样是一条一条的,而不是示例上的那种树状结构,我想把这种格式转化为demo里面的那种,但是我不知道用递归算法怎么和树状结构联合起来用啊
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

7#
发表于 2017-8-11 11:08:31 |只看该作者
xiejunli 发表于 2017-8-11 10:57
这个还是像表格一样是一条一条的,而不是示例上的那种树状结构,我想把这种格式转化为demo里面的那种,但 ...

贴html代码,以及数据。我来看一下

Rank: 2

8#
发表于 2017-8-11 11:18:17 |只看该作者
   1.页面
<div class="mini-splitter" style="width:100%;height:100%;">
        <div size="200" showCollapseButton="true">
            <div class="mini-toolbar" style="padding:2px;border-top:0;border-left:0;border-right:0;">               
                <span style="padding-left:5px;">系统目录</span>                 
            </div>
            <div class="mini-fit">
                <ul id="tree1" class="mini-tree" url="<%=this.ResolveUrl("~") %>data/learn/menuServer.aspx?method=getTree" style="width:100%;"
                    showTreeIcon="true" textField="MenuName" idField="MenuID" parentField="ParentID" iconField="Icon" resultAsTree="false">        
                </ul>
            </div>
        </div>
        <div showCollapseButton="true">
            <div class="mini-toolbar" style="padding:2px;border-top:0;border-left:0;border-right:0;">
                <a class="mini-button" iconCls="icon-106">新增</a>
                <a class="mini-button" iconCls="icon-015">修改</a>     
                <a class="mini-button" iconCls="icon-101">删除</a>            
            </div>
            <div class="mini-fit" >
                <div id="treegrid1" class="mini-treegrid" style="width:100%;height:100%;" showTreeIcon="false"
                    borderStyle="border:0;" treeColumn="MenuName" idField="MenuID" parentField="AppID"
                    url="<%=this.ResolveUrl("~") %>data/learn/menuServer.aspx?method=getTreeGrid" >
                    <div property="columns">
                        <div field="MenuID" width="120" headerAlign="center" allowSort="true">ID</div>      
                        <div field="MenuName" width="120" headerAlign="center" allowSort="true">菜单名称</div>            
                        <div field="URL" width="100" allowSort="true">URL</div>
                        <div field="Icon" width="100" allowSort="true" renderer="icon">图标</div>
                    </div>
                </div>  
            </div>
        </div>        
    </div>
    <script type="text/javascript">
        mini.parse();
        var path = '<%=this.ResolveUrl("~") %>';
        var tree = mini.get("tree1");
        var grid = mini.get("treegrid1");
        $(function () {
            tree.load();
            grid.load();
        });
        //点击tree获取节点id传到中转站
        tree.on("nodeselect", function (e) {
            grid.load({ submitData: JSON.stringify({ id: e.node.MenuID }) });
        });

    </script>
2.中转站
        public void getTreeGrid()
        {
            string json = string.Empty;
            String submitJSON = RequestHelper.GetString("submitData");
            Hashtable data = new Hashtable();
            if (!string.IsNullOrEmpty(submitJSON))
            {
                data = JSON.JsonDecode(submitJSON);
                DataTable dt = new Learn.BLL.S_Menu().GetTreeGrid(data);
                json = JSON.ToJson(dt);  //就是要处理这个数据,把它转换为demo里面txt文档里的格式
            }
            Response.Write(json);
        }

Rank: 8Rank: 8

9#
发表于 2017-8-11 11:23:55 |只看该作者
xiejunli 发表于 2017-8-11 11:18
1.页面

        

treeColumn="MenuName"
这列对应的是一列的name,不是field,你没有设置。

Rank: 2

10#
发表于 2017-8-11 11:27:27 |只看该作者
dforce 发表于 2017-8-11 11:23
treeColumn="MenuName"
这列对应的是一列的name,不是field,你没有设置。

您的意思是,我要在后面加上个nameField=“MenuName”?

Archiver|普加软件

GMT+8, 2024-11-25 01:41 , Processed in 1.059588 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部