Extjs动态树的实现以及节点拖拽(3)

2019-03-10 14:10

69. try {

70. conection.close();

71. } catch (SQLException sqlex) { 72. }

73. conection = null; 74. }

75. }catch(Exception e){ 76. e.printStackTrace(); 77. } 78. }

79. return obj; 80. } 81. 82. /**

83. * 获得指定节点的所有儿子节点 84. * @param id 85. */

86. @SuppressWarnings(\

87. public List getChildrenById(Integer id){ 88. List list = new ArrayList(); 89. Connection conection = null; 90. Statement stmt = null; 91. ResultSet rs = null; 92. try{

93. conection = DBConn.getConnection(); 94. stmt = conection.createStatement();

95. StringBuffer sql = new StringBuffer(\navigate where parentId = \96. sql.append(id);

97. sql.append(\

98. rs = stmt.executeQuery(sql.toString()); 99. while(rs.next()) 100. {

101. Navigate obj = new Navigate(); 102. obj.setId(rs.getInt(\103. obj.setLeaf(rs.getInt(\104. obj.setNumber(rs.getInt(\

105. obj.setParentId(rs.getInt(\106. obj.setTitle(rs.getString(\107. obj.setUrl(rs.getString(\108. list.add(obj); 109. }

110. }catch(Exception e){

111. e.printStackTrace();

112. }finally{ 113. try{

114. if(rs != null) { 115. try {

116. rs.close();

117. } catch (SQLException e) { 118. }

119. rs = null; 120. } 121. if (stmt != null) { 122. try {

123. stmt.close();

124. } catch (SQLException sqlex) { 125. }

126. stmt = null; 127. }

128. if (conection != null) { 129. try {

130. conection.close();

131. } catch (SQLException sqlex) { 132. }

133. conection = null; 134. }

135. }catch(Exception e){

136. e.printStackTrace(); 137. } 138. }

139. return list; 140. } 141. 142. /**

143. * 保存数据 144. * @param obj 145. */

146. public void save(Navigate obj){

147. StringBuffer sql = new StringBuffer(\avigate(parentId,title,leaf,number,url) values(\148. sql.append(obj.getParentId()); 149. sql.append(\

150. sql.append(obj.getTitle()); 151. sql.append(\

152. sql.append(obj.getLeaf()); 153. sql.append(\

154. sql.append(obj.getNumber());

155. sql.append(\

156. sql.append(obj.getUrl()); 157. sql.append(\

158. this.bulkUpdate(sql.toString()); 159. } 160. 161. /**

162. * 更新数据 163. * @param obj 164. */

165. public void update(Navigate obj){

166. StringBuffer sql = new StringBuffer(\te set\

167. sql.append(\168. sql.append(obj.getParentId()); 169. sql.append(\

170. sql.append(\171. sql.append(obj.getTitle()); 172. sql.append(\

173. sql.append(\174. sql.append(obj.getLeaf()); 175. sql.append(\

176. sql.append(\177. sql.append(obj.getNumber()); 178. sql.append(\179. sql.append(obj.getUrl()); 180. sql.append(\181. sql.append(obj.getId());

182. this.bulkUpdate(sql.toString()); 183. } 184. 185. /**

186. * 异步更新标题 187. * @param id 188. * @param title

189. * @return true-修改成功 false-修改失败 190. */

191. public Boolean ajaxUpdateTitle(Integer id,String title){

192. Boolean flag = false;

193. Navigate obj = this.get(id); 194. if(null != obj){

195. StringBuffer sql = new StringBuffer(\vigate set\

196. sql.append(\197. sql.append(title); 198. sql.append(\

199. sql.append(\200. sql.append(id);

201. this.bulkUpdate(sql.toString()); 202. flag = true; 203. }

204. return flag; 205. } 206. 207. /**

208. * 删除指定的一条数据 209. * @param id 210. */

211. public void removeById(Integer id){

212. StringBuffer sql = new StringBuffer(\avigate where id = \

213. sql.append(id);

214. this.bulkUpdate(sql.toString()); 215. } 216. 217. /**

218. * 异步删除数据,包括其子孙节点 219. * @param id 220. * @param title 221. */

222. @SuppressWarnings(\

223. public void ajaxRemoveNode(Integer id){ 224. List list = this.getChildrenById(id); 225. for (Object object : list) {

226. Navigate obj = (Navigate)object; 227. ajaxRemoveNode(obj.getId()); 228. }

229. this.removeById(id); 230. } 231. 232. /**

233. * 移动指定节点

234. * @param id 指定的节点的id

235. * @param oldParentId 节点移动前所在的父节点 236. * @param newParentId 节点移动后的目标父节点 237. * @param nodeIndex 节点移动后的目标位置 238. */

239. public void ajaxMoveNode(int id, int oldParentId, int newParentId, int nodeIndex){

240. Navigate obj = this.get(id);

241. int minIndex = obj.getNumber().intValue(); 242. int maxIndex = nodeIndex;

243. if(oldParentId == newParentId && minIndex != maxIndex){

244. // 在同一个父节点下发生移动 245. if(minIndex < maxIndex){

246. // 当要移动的节点的序号小于要移动到的目标序号,则下移

247. this.downNode(oldParentId, minIndex, maxIndex);

248. }else if(minIndex > maxIndex){

249. // 当要移动的节点的序号大于要移动到的目标序号,则上移

250. maxIndex = minIndex; 251. minIndex = nodeIndex;

252. this.upNode(oldParentId, minIndex, maxIndex);

253. }

254. // 节点本身的序号设置成要移动到的目标序号 255. obj.setNumber(nodeIndex); 256. this.update(obj); 257. }

258. if(oldParentId != newParentId){ 259. // 在不同父节点下发生移动

260. //1、相当于要移动的节点在原父节点下下移到最后再删除掉,因此要指定移动发生时节点所在的位置

261. this.downNode(oldParentId, minIndex, -1); 262. //2、相当于要移动的节点在新父节点下上移到指定的位置,因此需要指定要移动到的位置

263. this.upNode(newParentId, maxIndex, -1); 264. // 节点本身的序号设置成要移动到的目标序号 265. obj.setNumber(nodeIndex); 266. obj.setParentId(newParentId); 267. this.update(obj); 268. } 269. } 270. /**

271. * 指定的节点下移

272. * @param parentId 指定范围内要移动的节点的父节点 273. * @param minIndex 指定节点移动发生时所在的位置 274. * @param maxIndex 指定节点要移动到的目标位置


Extjs动态树的实现以及节点拖拽(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:湖南文艺出版社小学一年级上册全册音乐教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: