【发布时间】:2014-02-21 18:49:29
【问题描述】:
我以前从未真正使用过 Farpoint Spread,但我有一个现有的 VB.NET 应用程序,我需要在其中向 Spread 网格添加一列。目前有一些代码如:
For Each dr As DataRow In g_AdoRS.Rows
vaSpreadSum.SetText(1, x, dr(0)) 'pol_ser
...
vaSpreadSum.SetText(20, x, dr(19)) 'renew_pay_cd
vaSpreadSum.SetFloat(21, x, dr(20)) 'renew_tot_prem
vaSpreadSum.SetFloat(22, x, dr(21)) 'renew_pol_limit
vaSpreadSum.SetFloat(23, x, dr(22)) 'renew_ded_amt
vaSpreadSum.Col = 28
x = x + 1
Next dr
这些 SetFloat() 和 SetText() 调用从 0 到 28。所以为了添加另一列,我添加了这行代码:
vaSpreadSum.SetText(28, x, dr(27)) 'agent name
并将 vaSpreadSum.Col 更改为 29
vaSpreadSum.Col = 29
但我没有在我的网格中看到另一列。知道为什么吗?没有抛出错误或类似的东西,只是屏幕上没有变化。我知道可能需要更多信息来解决这个问题,但即使有人知道将列添加到 Farpoint Spread 网格的基础知识,我也会非常感激。我找到了this,但我的应用程序似乎没有以这种方式添加列,我在任何地方都找不到对 AddColumns() 方法的任何调用。
感谢您的帮助!
我相信这是我的 Form_Load 方法
Private Sub FrmDetailRPC_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Cursor.Current = Cursors.WaitCursor
FormInit()
QryLocation()
Cursor.Current = Cursors.Default
End Sub
我还将包括 FormInit(),因为这听起来可能与我正在寻找的内容有关
Sub FormInit()
txtBusUnit.Text = svBusUnit
stmtMktSeg()
txtProduct.Text = svProduct
txtSource.Text = svSource
txtSystem.Text = svSystem
txtCustSeg.Text = svCustSeg
stmtProduct()
txtLocation.Text = svLocation
If svLocationLabel = "Region" Then
lblLocation.Text = "Territory"
Else
lblLocation.Text = svLocationLabel
End If
lblLocation.TextAlign = ContentAlignment.TopRight
stmtLocation()
'txtPayType.Text = svPayType
txtTimePer.Text = TimeName
stmtTimePer()
End Sub
和 QryLocation()
Sub QryLocation()
Dim producerID As String
'SetProductSelection()
stmtLocation()
stmtGetProductType()
stmtGetTimePeriodType()
stmtGetTimePeriod()
stmtGetProducerID()
stmtGetProducerType()
If stmtProducerType = "No Preference" Then
producerID = "NULL"
Else
producerID = "'" & stmtProducerID & "'"
End If
g_strSQL = "pc_mis_rpc_getdata_detail " & _
"'" & stmtLocationType & "'," & _
"'" & Trim(svLocation) & "'," & _
"'" & svBusUnit & "'," & _
"'" & stmtProductType & "'," & _
"'" & Trim(stmtProductDtl) & "'," & _
"'" & stmtTimePeriod & "'," & _
"'" & stmtTimePeriodType & "'," & _
"'" & stmtProducerType & "'," & _
producerID & "," & _
"'Retention'" _
& FilterQry & "," & _
"'" & Trim(txtCustSeg.Text) & "'," & _
"'" & Trim(txtSource.Text) & "'," & _
"'" & Trim(txtSystem.Text) & "'"
ProcQry()
End Sub
【问题讨论】:
-
你知道网格最初是不是由设计师创建的吗?如果是这样,在表单生成的代码中应该有一些东西告诉展开控件存在多少列和行。您还可以查看表单设计器,单击展开控件,按 F4 以查看控件的属性,并检查是否在此处定义了行和列。
-
我不确定它是否是由设计师制作的,我显然无法访问它,因为我只有标准许可证。我在上面的帖子中添加了很多我认为会生成网格的代码。
-
该代码不会更改列数。它仅适用于在电子表格中发生单击时。请您发布您的 Form_Load 代码吗?
-
没有完全称为“Form_Load”的方法,但我相信我在原始帖子中添加的内容就是您所指的内容。
-
请您也发布 FormInit 和 QryLocation 吗?
标签: vb.net excel grid spread farpoint