以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]行号读取的求助-已解决,底层放出完整代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=172021) |
-- 作者:huangfanzi -- 发布时间:2021/9/18 13:50:00 -- [求助]行号读取的求助-已解决,底层放出完整代码 在窗口中的SQLQuery表,新增一行后,将当前的行号填入到“生产计划编号”列中,我目前是如下做的,但不行,得到的结果永远是 1 DataRowAdded Dim r As Row = CurrentTable.Current e.DataRow("生产计划编号") = r.Index + 1 另外,如果我删除了任意一行,如果不是最后一行,希望下方记录的“生产计划编号”列列自动更新 请老师看看,谢谢! [此贴子已经被作者于2021/9/18 14:53:19编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/9/18 14:13:00 -- 首先table的行号和数据库是没有任何关系的,不管是筛选,排序后第一行行号永远是1,没有什么业务意义。 其次不建议使用这个东西,假设有10W行数据,把第一行删除后,难道还得把后面的99999行数据改一下行号,扯淡吧
|
-- 作者:huangfanzi -- 发布时间:2021/9/18 14:23:00 -- 我的意思是,新增2行或3行后,第2行或第3行还是显示1,如何能显示2或3,另外,这张表是某个计划的工序表,加载记录时会有限定,记录不会很多,不会超过100行,所以不存在执行效率问题 |
-- 作者:有点蓝 -- 发布时间:2021/9/18 14:31:00 -- e.DataRow("生产计划编号") = e.datatable.datarows.count + 1 |
-- 作者:huangfanzi -- 发布时间:2021/9/18 14:46:00 -- 解决问题了,给各位参考下,使用此代码要求加载的数据不能太多,因为用了遍历 DataRowAdded事件:以下代码解决新增行与插入行后,编号自动更新的问题 Dim tb As WinForm.Table = e.Form.Controls("生产计划辅表") Dim t As Table = tb.Table If t.Rows.Count > 0 Then For Each r As Row In t.Rows r("生产计划编号") = r.Index + 1 Next End If DataRowDeleted事件: Dim tb As WinForm.Table = e.Form.Controls("生产计划辅表") Dim t As Table = tb.Table If t.Rows.Count > 0 Then For Each r As Row In t.Rows r("生产计划编号") = r.Index + 1 Next End If AfterMoveRow事件:上下移动行后更新行号 If e.Table.Rows.Count > 0 Then e.Table.Rows(e.oldindex)("生产计划编号") = e.Table.Rows(e.oldindex).index+1 e.Table.Rows(e.newindex)("生产计划编号") = e.Table.Rows(e.newindex).index+1 End If KeyDown事件:按 CTRL加 上下方向键实现 行的上下移动 If e.Control = True AndAlso e.Table.Current IsNot Nothing Then Select Case e.KeyCode Case Keys.Up Syscmd.Row.MoveUp() Case Keys.Down Syscmd.Row.MoveDown() End Select End If |