Closed GoogleCodeExporter closed 9 years ago
Original comment by songjie8...@gmail.com
on 5 Aug 2009 at 10:15
添加一个FunctionWindow,用于运行SQL,菜单名称为“动态报表分
析器”
标题:动态报表分析器
radio-button:使用模板、radio-button:手工录入,开始查询button
textarea模板预览,textarea录入区域。
查询结果:datagrid
错误提示:textarea
前页|后页
根据radio-button值来控制对应textarea的enabled属性,使用绑定。��
�模板选择好,或手工录入SQL后,点击
查询即可开始查询,将结果放于查询结果的datagrid中,如果SQL
有错误,则将错误号和错误信息显示在错误提示的
textarea,点击前后页可以进行翻页,每页显示20条数据。
能实现多少就实现多少功能,尽量哈,下面代码演示了如何��
�态添加column,从服务器端过来的xml可以含有一个
columnCount节点,这样就能知道到底有多少个节点了
原文地址:http://blog.flexexamples.com/2008/03/04/dynamically-adding-new-co
lumns-to-a-
datagrid-control-in-flex/
<?xml version="1.0" encoding="utf-8"?>
<!--
http://blog.flexexamples.com/2008/03/04/dynamically-adding-new-columns-to-a-
datagrid-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
private function addDataGridColumn(dataField:String):void {
var dgc:DataGridColumn = new DataGridColumn(dataField);
var cols:Array = dataGrid.columns;
cols.push(dgc);
dataGrid.columns = cols;
}
private function init():void {
addDataGridColumn("col4");
}
]]>
</mx:Script>
<mx:ArrayCollection id="arrColl">
<mx:source>
<mx:Array>
<mx:Object col1="A.1" col2="A.2" col3="A.3" col4="A.4"/>
<mx:Object col1="B.1" col2="B.2" col3="B.3" col4="B.4"/>
<mx:Object col1="C.1" col2="C.2" col3="C.3" col4="C.4"/>
<mx:Object col1="D.1" col2="D.2" col3="D.3" col4="D.4"/>
<mx:Object col1="E.1" col2="E.2" col3="E.3" col4="E.4"/>
<mx:Object col1="F.1" col2="F.2" col3="F.3" col4="F.4"/>
</mx:Array>
</mx:source>
</mx:ArrayCollection>
<mx:ApplicationControlBar dock="true">
<mx:Button label="Add column" click="init();" />
</mx:ApplicationControlBar>
<mx:DataGrid id="dataGrid"
dataProvider="{arrColl}"
width="400"
rowCount="6">
<mx:columns>
<mx:DataGridColumn dataField="col1" />
<mx:DataGridColumn dataField="col2" />
<mx:DataGridColumn dataField="col3" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
Original comment by rcom10002
on 5 Aug 2009 at 12:27
var c1:DataGridColumn = new DataGridColumn("@c1");
var c2:DataGridColumn = new DataGridColumn("@c2");
var c3:DataGridColumn = new DataGridColumn("@c3");
dataGrid = new DataGrid();
dataGrid.columns = [c3, c1, c2];
dataGrid.rowCount = 5;
dataGrid.dataProvider = dp;
addChild(dataGrid);
Original comment by rcom10002
on 5 Aug 2009 at 3:04
目前遇到个问题
1.后台接收到SQL文,用什么方向来执行它,并返回什么结果
我目前是用Query query =
HibernateSessionFactory.getSession().createSQLQuery(sql);
info.setEntityList(query.list());
return toXML(info, getAliasTypes());
2.前台接收到的应该是什么样的结果集,用什么方法来遍历有
用的字段列
我目前用var colsLen:int =
e4xResult.entityList.children()[0].children().length();
var cols:Array = new Array();
for (var ind : int = 0; ind < colsLen; ind ++) {
cols.push(new DataGridColumn
(e4xResult.entityList.children()[0].children()[ind].name()));
}
datagridResult.columns = cols;
datagridResult.dataProvider = e4xResult.entityList.children
();
……附件中的图片是我返回的结果,这个结果是否正确,如��
�取到有用的字段列名及内容
PS:帮忙看一下,是否能在这基础上改,要是方向不对请给个
解决方案。
Original comment by songjie8...@gmail.com
on 12 Aug 2009 at 1:54
Attachments:
1.方法正确!
2.你可以参考PlayerProfile中角色和用户关系路径RLS来做,返回��
�果是一个map
<result>
<tag>
<map>
<col1>xxx</col1>
<col2>xxx</col2>
<col3>xxx</col3>
</map>
<map>
<col1>xxx</col1>
<col2>xxx</col2>
<col3>xxx</col3>
</map>
<map>
<col1>xxx</col1>
<col2>xxx</col2>
<col3>xxx</col3>
</map>
</tag>
</result>
并且e4x支持for
each语句的形式,看PlayerProfile的角色和关系路径
把结果集显示在datagrid,动态生成列就行了
Original comment by rcom10002
on 12 Aug 2009 at 2:02
xstream很灵活,可以根据需要生成不同形式的xml,自己定义个�
��理方案就行
对于模板中的内容,还需要传入参数的,这样可以更加灵活��
�
String sql = request.getParameter("SQL_TEMPLATE");
/*
* sql的内容为:
* SELECT user_id, rls_path, current_score, create_time
* FROM player_profile
* WHERE rls_path LIKE CONCAT(?, "%")
* AND current_score > ?
* ?..=user1,500
*/
参数格式为:?..=参数值,参数值...
觉得难度大的话,可以稍后再做
Original comment by rcom10002
on 12 Aug 2009 at 2:11
参数格式为:?..=参数值,参数值...
?..=user1_String,500_Integer
这样可以把类型也跟上,对于数字,全部采用Integer,字符串�
��用String,日期时间戳,也用String,在SQL中将传
入的字符串转成日期时间戳格式,或是把数据库中日期时间��
�转成String后进行比较
可以写个共同专门用于赋值,Query.setParameter(paramIndex,
paramValue);
Original comment by rcom10002
on 12 Aug 2009 at 2:25
管理的模块赶紧赶出来~这样你就可以从模板里调用SQL了,��
�用写假的了
Original comment by rcom10002
on 14 Aug 2009 at 12:04
动态报表分析器,运行出错时,显示具体的错误信息,如SQL��
�息和SQL错误号,这样便于错误分析
Original comment by rcom10002
on 15 Aug 2009 at 9:39
Original comment by songjie8...@gmail.com
on 21 Aug 2009 at 5:58
Original issue reported on code.google.com by
rcom10002
on 3 Aug 2009 at 1:20