dataGrid如何直接输入数据

Ansonxing 2010-10-09 12:27:21
我想通过动态创建n行m列的datagrid,然后直接在表格里输入数据,

动态创建已经实现了,但空白表格里不能直接输入数据,

改了其属性editable为true也不能输入。


现在想直接在表格内打入数字(表格输入之前无任何数据),

然后通过点击一个button,

获取数字并自动按表格的行列对应存入一个二维数组里,

请问这该如何实现?
...全文
232 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ansonxing 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 leemiki 的回复:]

不对!
arrayColl:ArrayCollection = new ArrayCollection();

arrayColl的长度不还是0,和你没定义有什么区别

arrayColl放的是对象集合,对象属性对应于DataGrid的列

比如一个Person对象,有三列分别对应name,age,sex属性
var personColl:ArrayCollection = ne……
[/Quote]
多谢高手指点!!!
leemiki 2010-10-09
  • 打赏
  • 举报
回复
不对!
arrayColl:ArrayCollection = new ArrayCollection();

arrayColl的长度不还是0,和你没定义有什么区别

arrayColl放的是对象集合,对象属性对应于DataGrid的列

比如一个Person对象,有三列分别对应name,age,sex属性
var personColl:ArrayCollection = new ArrayCollection();
for(var i:int=0;i<DataGrid的行数;i++){
var person:Person = new Person();
person.name = "";
person.age= "";
person.sex= "";
}

dg.dataProvider = personColl;


Ansonxing 2010-10-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 leemiki 的回复:]

给DataGrid的dataProvider赋上一个空的ArrayCollection

空指的是所有元素都为""不是null,这样就可以了
[/Quote]
是这样吗?但好像还是不行
[Bindable]
public var arrayColl:ArrayCollection = new ArrayCollection();
protected function commit_clickHandler(event:MouseEvent):void
{
simplex.removeAllElements();
m = int(constrain.text);
n = int(vari.text);
var i:int;
var dg:DataGrid = new DataGrid();
dg.dataProvider = arrayColl;
dg.id = "myDG";
dg.width = 400;
dg.editable = true;
simplex.addElement(dg);
dg.rowCount = m;
for(i=1;i<=n;i++){
dg.columns = dg.columns.concat(addColumn(i));
}
}

public function addColumn(variable:int):DataGridColumn{
var column:DataGridColumn = new DataGridColumn();
column.headerText = "X"+variable;
column.dataField = " ";
column.editable = true;
return column;
}
leemiki 2010-10-09
  • 打赏
  • 举报
回复
给DataGrid的dataProvider赋上一个空的ArrayCollection

空指的是所有元素都为""不是null,这样就可以了
Ansonxing 2010-10-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 leemiki 的回复:]

DataGrid没有设定dataProvider,怎么显示??

没有数据显示又怎么会有行列???你又怎么能编辑呢???
[/Quote]
想数据通过手工输入,就想excel那样,一开始就是空的,
该如何实现?
leemiki 2010-10-09
  • 打赏
  • 举报
回复
DataGrid没有设定dataProvider,怎么显示??

没有数据显示又怎么会有行列???你又怎么能编辑呢???
Ansonxing 2010-10-09
  • 打赏
  • 举报
回复
上面那个搞错了,编辑不了,重新发过
			protected function commit_clickHandler(event:MouseEvent):void
{
simplex.removeAllElements();
m = int(constrain.text);
n = int(vari.text);
var i:int;
var dg:DataGrid = new DataGrid();
dg.id = "myDG";
dg.width = 400;
dg.editable = true;
simplex.addElement(dg);
dg.rowCount = m;
for(i=1;i<=n;i++){
dg.columns = dg.columns.concat(addColumn(i));
}
}

public function addColumn(variable:int):DataGridColumn{
var column:DataGridColumn = new DataGridColumn();
column.headerText = "X"+variable;
column.editable = true;
return column;
}
Ansonxing 2010-10-09
  • 打赏
  • 举报
回复
不知哪里错了,还是不可编辑,帮忙看看哪里出了问题,谢谢

protected function commit_clickHandler(event:MouseEvent):void
{
simplex.removeAllElements();
m = int(constrain.text);
n = int(vari.text);
var i:int;
var dg:DataGrid = new DataGrid();
dg.id = "myDG";
dg.width = 400;
dg.editable = true;
simplex.addElement(dg);
dg.rowCount = m;
for(i=1;i<=n;i++){
dg.columns = dg.columns.concat(addColumn(i));
}
}

public function addColumn(variable:int):DataGridColumn{
var column:DataGridColumn = new DataGridColumn();
column.headerText = "X"+variable;
column.editable = true;
column.
return column;
}
student_2008 2010-10-09
  • 打赏
  • 举报
回复
在点击DataGrid的某项时会触发itemClick事件,可以在这个里面获得这项的内容,可以进行数据库操作实现即时修改
Jason-Jin 2010-10-09
  • 打赏
  • 举报
回复
使用itemreander
passself 2010-10-09
  • 打赏
  • 举报
回复
改了其属性editable为true也不能输入


这个肯定是可以输入的,但是不一定能保存,所以你还需要对输入完成之后设置相应的函数来保存输入的结果,这样才可以。
leemiki 2010-10-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 ansonxing168 的回复:]
改了其属性editable为true也不能输入。
[/Quote]

。。。肯定是你哪里书写有问题

有问题把相关代码贴出来~~~~

利用ListEvent获取columnIndex、rowIndex作为数组下标,直接操作dataProvider即可
VB DataGrid分页 请看: 数据库:test2000.mdb 表:numbers 字段:Id(自动编号),anumber(数字) 因为DataGrid控件我们采用直接绑定记录集来显示数据.所以分页处理我们采用了间接的办法,定义另一个记录集objrs,将分页后的记录集付给objrs.然后绑定DataGrid ''效果还不错 , 我加了详细地注释,像pagesize, AbsolutePage的用法可参考msdn VB中新建工程,form中添加DataGrid控件,按钮cmdPrevious和cmdNext,文本框txtPage ''引用microsoft active data object 2.x object library Option Explicit Dim conn As ADODB.Connection Dim lCurrentPage As Long Private Sub cmdNext_Click() lCurrentPage = lCurrentPage + 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub cmdPrevious_Click() If lCurrentPage > 1 Then lCurrentPage = lCurrentPage - 1 Call Loadcontrol(lCurrentPage) End If End Sub Private Sub Form_Load() Set conn = New ADODB.Connection conn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test2000.mdb;" lCurrentPage = 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub Loadcontrol(lPage As Long) Dim adoPrimaryRS As ADODB.Recordset Dim lPageCount As Long Dim nPageSize As Integer Dim lCount As Long ''每页显示的纪录 nPageSize = 10 Set adoPrimaryRS = New ADODB.Recordset adoPrimaryRS.Open "select * from numbers", conn, adOpenStatic, adLockOptimistic adoPrimaryRS.PageSize = nPageSize ''页数 lPageCount = adoPrimaryRS.PageCount If lCurrentPage > lPageCount Then lCurrentPage = lPageCount End If adoPrimaryRS.AbsolutePage = lCurrentPage ''定义另一个记录集 Dim objrs As New ADODB.Recordset ''添加字段名称 For lCount = 0 To adoPrimaryRS.Fields.Count - 1 objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize Next ''打开记录集 objrs.Open ''将指定记录数循环添加到objrs中 For lCount = 1 To nPageSize objrs.AddNew objrs!id = adoPrimaryRS!id objrs!anumber = adoPrimaryRS!anumber adoPrimaryRS.MoveNext Next ''绑定 Set DataGrid1.DataSource = objrs ''在文本框显示页数 txtPage = lPage & "/" & adoPrimaryRS.PageCount End Sub Private Sub Form_Unload(Cancel As Integer) If Not conn Is Nothing Then conn.Close End If Set conn = Nothing End Sub ‘文本框中输入页数,回车跳转到指定位置 Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer) lCurrentPage = Val(txtPage.Text) Call Loadcontrol(lCurrentPage) End Sub
相当但丰富于DataTable/View数据王国的“BaiDu”超级搜索过滤(欢迎转载)。***用法***名称:淘金筛(超级搜索过滤器)***用法***Step1 将淘金筛控件拖至WinForm/WebForm,假如命名为GoldFilter1; 将网格控件拖至WinForm/WebForm,假如命名为DataGrid1;Step2 在Form_Load/Page_Load事件中过程中,设置DataGrid1的数据源之后,只需指定如下一句一切OK: GoldFilter1.DataSource = DataGrid1.DataSourceStep3 程序运行时,GoldFilter1自动在WinForm/WebForm中为字段列下拉框加载数据源的各列或指定的列。 为操作类型下拉框加载各种操作,包括各种比较操作如=、<>、>、>=、<、<=、列举多个相等过滤、 两者之间范围比较等及其它的丰富的操作如包含、左包含、右包含模糊匹配。针对常用且实用的 长度判断、空值与非空值过滤特别智能匹配比较等。***功能特点*** 简单快捷、易用实用***功能描述*** 对DataTable/View各列做各种智能匹配、比较操作、模糊匹配查询过滤、在结果中查询过滤。 相当但丰富于DataTable/View数据王国的“BaiDu”***适用范围*** 各个网站网页或软件的网格数据过滤,通用于Oracel、SQLServer、ADO.NET的查询过滤。***操作*** 1、智能匹配 字段列下拉框选择一项,操作类型下拉框不用选,直接在过滤输入输入过滤的数字或文本或日期即可查找过滤。 如果你输入了通配符如%、*号,自动做模糊匹配查找过滤。 2、比较操作 字段列下拉框选择一项,操作类型下拉框选择比较操作,直接在过滤输入输入过滤的数字或文本或日期即可查找过滤。 比较操作有如下几种: 相等、不等、大于、大于或等于、小于、小于或等于、两者之间、列举多个(相等) 3、模糊匹配 字段列下拉框选择一项,操作类型下拉框选择包含操作,直接在过滤输入输入包含的数字或文本或日期即可查找过滤。 包含操作有如下几种: 包含,过滤所有在过滤输入中的文本中出现的数据 左边象,过滤所有以在过滤输入中的文本开头的数据 右边象,过滤所有以在过滤输入中的文本结尾的数据 4、在结果中查询过滤 可以无限次重复使用前面操作后,执行在结果中查找命令。************************************************************************************************ 作 者:长江支流(周方勇) Email:flygoldfish@sina.com QQ:150439795 网 址:为保证本站下载量,请直接本站下载,可联系作者索取最新源码。 ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★************************************************************************************************

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧