Foxtable(狐表)用户栏目专家坐堂 → 无法绑定到 DataSource 的属性或列


  共有4171人关注过本帖树形打印复制链接

主题:无法绑定到 DataSource 的属性或列

帅哥哟,离线,有人找我吗?
vimin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
无法绑定到 DataSource 的属性或列  发帖心情 Post By:2020/2/24 14:17:00 [只看该作者]

我碰到弹出以上的错误提示。
查出原因居然是这句造成的:
PopMessage("该采购单已完成,已被锁定.需要解锁才能编辑.","请留意",PopIconEnum.Infomation,5)
这句在datacolchangedatacolchanged中,注释掉之后就不会跳出这个提醒。

请问老师能帮忙分析一下原因吗?
这句我原来是用messagebox.show写的,反而一直没问题。

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111376 积分:566944 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/24 14:25:00 [只看该作者]

我单独测试没有问题,可能和其它代有冲突。做个例子发上来看看

 回到顶部
帅哥哟,离线,有人找我吗?
liufucan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:649 积分:5730 威望:0 精华:0 注册:2017/4/7 12:15:00
  发帖心情 Post By:2020/2/24 15:13:00 [只看该作者]

PopMessage是会有很多莫名其妙的问题,比方在模式窗口用这句,关闭的时候会把你的模式窗口也关闭了

 回到顶部
帅哥哟,离线,有人找我吗?
vimin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2020/2/24 16:05:00 [只看该作者]

我进一步测试了一下,是这个(....,5)秒数,自动关闭造成的。
如果单纯使用popmessage是没问题的,只要一设这个Duration参数,就会碰到以上问题。
因为我是在afterload中,使用RaiseDataColChanged,强制刷新datacolchanged中的字段来判断,弹出POPMESSAGE
不设置秒数,弹出的popmessage是无法关闭的,应该是被打开的窗口盖住了。
设置秒数,popmessage自动关闭的同时,变跳出了以上错误提示。
请老师看一下,是个问题,还是我这样设计的问题,可以怎么变通吗?使用messagebox.show的问题就是:窗口还没弹出,messagebox先弹出了。感觉不太好,所以才想到了用popmessage的方法。

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111376 积分:566944 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/24 16:28:00 [只看该作者]

afterload和datacolchanged的完整代码发上来看看

 回到顶部
帅哥哟,离线,有人找我吗?
vimin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2020/2/26 15:18:00 [只看该作者]

窗口afterload的代码(我觉得大部分没用,有关系的标红了):

DataTables("PurchaseN_Table2").DataCols("采购下单时间").SetDateTimeFormat(Datetimeformatenum.Datelongtime)
DataTables("PurchaseN_Table2").DataCols("付款时间").SetDateTimeFormat(Datetimeformatenum.Datelongtime)
DataTables("PurchaseN_Table2").DataCols("款清时间").SetDateTimeFormat(Datetimeformatenum.Datelongtime)

If ancs = "xzcgd" Then
    e.Form.Controls("ad").performclick()
ElseIf ancs Like "C*" Then
    DataTables("PurchaseN_Table2").LoadFilter = "采购编号 = '" & ancs & "'"
    DataTables("PurchaseN_Table2").load()
    DataTables("PurchaseN_Table1").LoadFilter = "采购编号 = '" & ancs & "'"
    DataTables("PurchaseN_Table1").load()
    e.Form.Controls("add").Enabled = False
End If

Dim tb As Table = e.Form.Controls("Table1").Table
Dim bm As DataRow = lkb.find("表名 = '" & tb.name & "'")
If bm IsNot Nothing Then
    tb.setColVisibleWidth(bm("列宽"))
End If

e.Form.Controls("Table2").Visible = False

Dim zh As WinForm.ComboBox = e.Form.Controls("zh")
Dim sql As new SQLCommand
Dim lsb As DataTable
sql.C
sql.CommandText = "sell ect [账户名称] from {收支账户}"
lsb = sql.ExecuteReader
zh.ComboList = lsb.GetComboListString("账户名称")
Dim fwd As WinForm.ComboBox = e.Form.Controls("fwd")
Dim sql1 As new SQLCommand
Dim lsb1 As DataTable
sql1.C
sql1.CommandText = "sell ect [仓库名称] from {仓库代码表}"
lsb1 = sql1.ExecuteReader
fwd.ComboList = lsb1.GetComboListString("仓库名称") & "|直邮客户"


tb.cols("流水号").Visible = False

tb.Cols("基础货号").DropForm = "BPDrop"    '科目列和下拉窗口BPdrop绑定

tb.Grid.Cols("采购编号").Style.BackColor = Color.Gainsboro
tb.Grid.Cols("产品基本名称").Style.BackColor = Color.Gainsboro
tb.Grid.Cols("采购总价").Style.BackColor = Color.Gainsboro

tb.cols("报价").TextAlign = TextAlignEnum.Center
tb.cols("折扣").TextAlign = TextAlignEnum.Center
tb.cols("实际采购单价").TextAlign = TextAlignEnum.Center
tb.cols("数量").TextAlign = TextAlignEnum.Center
tb.cols("采购总价").TextAlign = TextAlignEnum.Center

DataTables("PurchaseN_Table2").DataCols("应付货款").RaiseDataColChanged()    '为了让总金额label显示
DataTables("PurchaseN_Table2").DataCols("采购单状态").raisedatacolchanged()    '判断一下采购单状态,这个状态有可能通过其他流程更改

If Tables("PurchaseN_Table2").Current.IsNull("付款时间") Then
    e.Form.Controls("date").Visible = False
Else
    e.Form.Controls("date").Visible = True
End If
If Tables("PurchaseN_Table2").Current.IsNull("款清时间") Then
    e.Form.Controls("date1").Visible = False
Else
    e.Form.Controls("date1").Visible = True
End If
e.Form.Controls("js").Visible = Tables("PurchaseN_Table2").Current.Locked


table2控件的datacolchanged:

Dim cmd As new SQLCommand
Dim rq As Date
cmd.C
cmd.CommandText = "sell ect getdate()"    '获取SQL服务器时间
rq = cmd.ExecuteScalar
If e.DataCol.Name = "已支付金额" Then
    If e.DataRow("已支付金额") = 0 Then
        e.DataRow("付款时间") = Nothing
        e.Form.Controls("date").Visible = False
    Else
        e.DataRow("付款时间") = rq
        e.Form.Controls("date").Visible = True
    End If
    e.DataRow("未支付金额") = e.DataRow("应付货款") + e.DataRow("应付邮费") - e.DataRow("已支付金额")
End If
If e.DataCol.Name = "应付货款" OrElse e.DataCol.Name = "应付邮费" Then
    e.DataRow("未支付金额") = e.DataRow("应付货款") + e.DataRow("应付邮费") - e.DataRow("已支付金额")
    e.Form.Controls("zje").value = e.DataRow("应付货款") + e.DataRow("应付邮费")
End If
If e.DataCol.Name = "未支付金额" Then
    If e.DataRow("未支付金额") = 0 Then
        e.DataRow("款清时间") = rq
        e.Form.Controls("date1").Visible = True
    ElseIf e.DataRow("未支付金额") > 0 Then
        e.DataRow("款清时间") = Nothing
        e.Form.Controls("date1").Visible = False
    Else
        e.DataRow("款清时间") = rq
        e.Form.Controls("date1").Visible = True
        MessageBox.show("未支付金额是负数,请注意是否合理")
    End If
End If
If e.DataCol.Name = "供应商名称" Then
    If e.NewValue Is Nothing Then
        e.DataRow("供应商编码") = ""
    Else
        Dim sql As new SQLCommand
        Dim lsz As String
        sql.C
        sql.CommandText = "sell ect [供应商编号] from {供应商表} where [供应商名称] = '" & e.newvalue & "'"
        lsz = sql.ExecuteScalar
        e.DataRow("供应商编号") = lsz
    End If
End If
If e.DataCol.Name = "采购单状态" OrElse e.DataCol.Name = "未支付金额" Then
    If (e.DataRow("采购单状态") = "直邮签收" OrElse e.DataRow("采购单状态") = "已入库") AndAlso e.DataRow("未支付金额") = 0 Then
        MessageBox.show("采购单已完成,该采购单将锁定")
        e.DataRow.Locked = True
        e.Form.Controls("js").Visible = True
        DataTables("PurchaseN_Table1").AllowEdit = False
    End If
End If
[此贴子已经被作者于2020/2/26 15:20:33编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111376 积分:566944 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/26 15:35:00 [只看该作者]

单元格编辑的时候弹出提示还可以,raisedatacolchanged的时候就不要弹出提示了,没有多大作用

vars("show") = false
DataTables("PurchaseN_Table2").DataCols("采购单状态").raisedatacolchanged() 
vars("show") = true
MessageBox.show("已完成采购单将锁定")

-----------
If e.DataCol.Name = "采购单状态" OrElse e.DataCol.Name = "未支付金额" Then
    If (e.DataRow("采购单状态") = "直邮签收" OrElse e.DataRow("采购单状态") = "已入库") AndAlso e.DataRow("未支付金额") = 0 Then
if vars("show")= ture
        MessageBox.show("采购单已完成,该采购单将锁定")
end if
        e.DataRow.Locked = True
        e.Form.Controls("js").Visible = True
        DataTables("PurchaseN_Table1").AllowEdit = False
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
vimin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2020/2/26 16:03:00 [只看该作者]

好的,非常感谢

 回到顶部