2017-03-15 92 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