2017-03-15 90 views
0

编程方式获取行值我有一个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与协议的清单。该名单上有所谓的“平衡”一个字段:

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 

但“价值”是空的。

我做错了什么?

我模拟使用此方法,从网格视图读值的系统,而这种代码上工作的顺利进行:

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

这个代码是一个按钮里面了。

谢谢!

+1

'我试图以编程方式阅读你在哪里读它? – Win

+0

来自gridView控件 – pepe

+0

GridView的什么事件?请发布您的代码。 – Win

回答

1

我碰到一个答案,我需要使用BondField控制,而不是模板字段,现在一切运行良好。

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

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

更好地从源文件中读取值lstBalances