我有一个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
然后它在加载后显示我:
我试图以编程方式阅读一个特定的余额:
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)
此代码也位于按钮内。
谢谢!
答案 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>