2014-02-21 145 views
0

我从来没有真正使用过Farpoint Spread,但我有一个现有的VB.NET应用程序,我需要将它添加到Spread网格中。目前像一些代码:将列添加到Farpoint 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 
+0

你知道网格是否是最初由设计者创建的吗?如果是这样,表单的生成代码中应该有一些东西来告诉扩散控制有多少列和行存在。您还可以查看表单设计器,单击展开控件,点击F4查看控件的属性,然后检查行和列是否在那里定义。 –

+0

我不确定它是否由设计师制作,显然我没有访问它,因为我只有标准许可证。我在上面的帖子中添加了很多我认为生成网格的代码。 – intA

+0

该代码不会更改列的数量。只有在电子表格中发生点击时才会发生。你会发布你的Form_Load代码吗? –

回答

0

在你的Form_Init()你需要调整colu的数量mns在传播控制。

它应该是这个样子:

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尚未打开,请按F4),并将Cols属性增加到29.

+0

说Cols不是AxFPSpreadADO.AxfpSpread的成员'Col'似乎没有抛出错误,认为它是一样的? – intA

+0

刚刚与Col一起尝试过,它给了我一个空引用异常 – intA

+0

No.尝试列而不是Cols。我没有在我面前的文档,所以我想记住什么是正确的属性名称。 –

0

您增加该列,如下所示: vaSpreadSum.MaxC ols = 29