2015-02-12 85 views
0

我使用Visual Studio 2008在C#中編寫ASP.NET#GridView與ASP.NET中的複選框

我想在Gridview中獲取值檢查或未選中表單複選框。 這是我的代碼。

void imbTransferBySelect_Click(object sender, ImageClickEventArgs e) 
{ 
    for (int i = 0; i < GridView1.Rows.Count; i++) 
    { 
     CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("Transfer_Selector"); 
     if (cb.Checked) 
     { 
      //do something 
     } 
    } 
} 

當複選框未選中時,代碼運行良好。

但是,當複選框被選中的GridView1.Rows.Count = 0價值是讓for循環是無法

我嘗試在http://www.aspsnippets.com/Articles/GridView-with-CheckBox-Get-Selected-Rows-in-ASPNet.aspx

foreach (GridViewRow row in GridView1.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox chkRow = (row.Cells[0].FindControl("Transfer_Selector") as CheckBox); 
     if (chkRow.Checked) 
     { 
      //do something 
     } 
    } 
} 

這是用另一種代碼時沒有選中的複選框運行正常。

並且當複選框被選中時,它會在for循環中再次失敗。

任何人都有過像我這樣的問題,或知道發生了什麼事。

+0

什麼意思「當複選框被選中GridView1.Rows.Count = 0的值它的循環失敗」?如果沒有包含「CheckBox」的行,如何檢查複選框? – 2015-02-12 08:13:41

+0

是的,當複選框檢查GridView1.Rows.Count = 0時,我在調試步驟中看到它,並且代碼運行完成時gridview丟失 – benmore99 2015-02-12 08:20:50

+0

我嘗試更改複選框默認選中.aspx文件並運行再一次,它又失敗了,但是當我全部取消選中時,它可以在for循環中運行,並且它進入檢查狀態。對不起,我的問題,它應該讓你混淆。 – benmore99 2015-02-12 08:37:18

回答

1

好友只是把一個if條件foreach循環根據你的問題我給你的解決方案。檢查下面的解決方案..

if(GridView1.Rows.Count > 0) 
{ 
foreach (GridViewRow row in GridView1.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox chkRow = (row.Cells[0].FindControl("Transfer_Selector") as CheckBox); 
     if (chkRow.Checked) 
     { 
      //do something 
     } 
    } 
} 
} 
+0

'GridView1.Rows.Count = 0'並且它沒有進入條件 – benmore99 2015-02-12 08:48:46

+0

您只需添加這個條件 - > if(GridView1.Rows.Count> 0) – Shirish 2015-02-12 08:57:40

+0

我這樣編碼,當我運行'GridView1.Rows.Count = 0',所以它不會進入如果和爲每個條件。 – benmore99 2015-02-12 09:05:21