2013-11-22 33 views
0

我在gridview中添加了複選框。我想要從每一行中獲取第三個單元格的值。我正在使用按鈕點擊回發到gridview之外的服務器。 我的代碼:無法檢測到GridView中CheckBox檢查的方法

(ASPX部分)

<asp:TemplateField HeaderStyle-Width="8px"> 
<ItemTemplate > 

         <asp:CheckBox runat="server" ID="chkRow"/> 
</ItemTemplate> 
</asp:TemplateField> 
'It is outside of the Gridview 
<asp:Button ID="btnGetSelected" runat="server" Text="Get selected records" OnClick ="GetSelectedRecords" /> 

(Vb.net部分)

Protected Sub GetSelectedRecords(sender As Object, e As EventArgs) 
    Dim dt As New DataTable() 
    Dim colSelRowKeys As New Collection 
    colSelRowKeys.Clear() 
    Dim s As String 
    For Each row As GridViewRow In GridADFMain.Rows 
If (CType(row.FindControl("chkRow"), CheckBox)).Checked Then 
      s = row.Cells(3).Text 
      colSelRowKeys.Add(s) 
End If 
    Next 
    Session.Add("colSelRowKeys", colSelRowKeys) 
End Sub 

我無法進入,如果檢查的條件。

+0

你的代碼看起來不錯,在我的測試中也能正常工作。 – afzalulh

回答

0

您發佈的代碼在測試中效果很好。確保你沒有重新綁定你的Gridview。在重新綁定複選框中,值將被覆蓋。檢查要進行數據綁定在GridView,通常在Page_Load中,包代碼。如果沒有的IsPostBack象下面這樣:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     'Code to get data 
     ' ..........    
     ' BindGridView() 
     GridADFMain.DataBind() 
    End If 
End Sub 

希望它能幫助!

+0

我已經綁定了gridADFMain在我的頁面load.I能夠查看數據。我的問題是,當我點擊按鈕的單擊事件也罰款。但isChecked不工作。 – user2526236

+0

這不是關於綁定,而是關於重新綁定。當你點擊按鈕時,Page_Load被觸發,如果它沒有'If Not Page.IsPostBack',它將從複選框中刪除Checked。所以當'GetSelectedRecords'執行時,複選框是默認狀態,不再檢查。 – afzalulh

+0

如果您發佈Page_Load方法,可能我們可以確定它是否正常。 – afzalulh