从gridview以编程方式获取行值

时间:2017-03-15 17:01:11

标签: asp.net gridview

我有一个GridView控件和一个按钮:

<asp:GridView ID="grdView" runat ="server" AutoGenerateColumns ="false" >        
    <Columns>             
        <asp:TemplateField HeaderText ="Balance">
            <ItemTemplate>
                <%#Eval("Balance") %>
            </ItemTemplate>
        </asp:TemplateField>
     </Columns>     
</asp:GridView>

 <asp:Button runat="server" ID ="btn" Text ="test"/>    

然后在加载页面上,我用一个协议列表填充gridView。在该列表上有一个名为&#34; Balance&#34;:

的字段
    Private Sub form1_Load(sender As Object, e As EventArgs) Handles form1.Load
    Dim agreementManager As AgreementManager = New AgreementManager()

    Dim lstBalances As List(Of Agreement) = agreementManager.GetByClientId(2)

    grdView.DataSource = lstBalances
    grdView.DataBind()

End Sub

然后它在加载后显示我:

Balance

我试图以编程方式阅读一个特定的余额:

Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click

    Dim value As String = grdView.Rows(1).Cells(0).Text

End Sub

但&#34;价值&#34;是空的。

我做错了什么?

我正在模拟一个使用这种方式从网格视图中读取值的系统,这段代码工作正常:

Dim balance As Decimal =        
   CType(grdApplyTransactionsAgreements.Rows(idx).Cells(BALANCE_CELLID).Text, Decimal)

此代码也位于按钮内。

谢谢!

2 个答案:

答案 0 :(得分:1)

.Text属性只能在AutoGenerated列和BoundField列的DataBinding之后读取。但即使你可以,我也不会推荐它,因为你得到的只是一个字符串,而不是原始的数据类型。

更好地阅读来源lstBalances的值。

答案 1 :(得分:1)

我碰到了答案,我需要使用BondField Control而不是模板字段,现在一切运行正常。

 <asp:GridView ID="grdView" runat ="server" AutoGenerateColumns ="false" >        
      <Columns>                          
          <asp:BoundField  DataField ="Balance" HeaderText ="Balance"/>
      </Columns>
  </asp:GridView>