【问题标题】:Adding a column to a Farpoint Spread grid向 Farpoint Spread 网格添加列
【发布时间】: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


【解决方案1】:

在您的Form_Init() 中,您需要调整展开控件中的列数。

它应该看起来像这样:

Sub FormInit()
    ' Add a column to the spreadsheet control
    vaSpreadSum.ActiveSheet.AddColumns(29, 1)

    ' Code cut for brevity
End Sub

--或--

Sub FormInit()
    ' Add a column to the spreadsheet control
    vaSpreadSum.ActiveSheet.Columns.Count = 29

    ' Code cut for brevity
End Sub

实现相同目的的另一种方法是打开表单设计器,选择展开控件,显示属性窗口(如果尚未打开,请按 F4),并将 Cols 属性增加到 29。

【讨论】:

  • Says 'Cols is not a member of AxFPSpreadADO.AxfpSpread' 'Col' 似乎没有抛出错误,认为它是一样的吗?
  • 刚刚用 Col 试了一下,它给了我一个空引用异常
  • 没有。尝试使用 Columns 而不是 Cols。我面前没有文档,所以我试图记住正确的属性名称应该是什么。
  • 也不喜欢 Columns 或 Column。有这方面的文件吗?我找遍了,也没找到。
【解决方案2】:

您按如下方式增加列: vaSpreadSum.MaxCols = 29

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-10
    • 2015-07-19
    • 2017-07-13
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2019-04-29
    • 2013-07-02
    相关资源
    最近更新 更多