2011-11-12 133 views
1

我在我的web表單中有30個複選框,我想將複選框的狀態存儲在一個bool數組中。現在,因爲asp.net不接受使用像「我」這樣的變量的複選框的「checked」狀態,問題是我不知道如何執行代碼!檢查包含變量的複選框的狀態。複選框(i).checked?

我想是這樣的:

bool[] array = new bool[30]; 
for (int i = 0; i < 30; i++) 
    { 
     array[i] = CheckBox(i).Checked ; 
    } 

當你運行上面的代碼,你會得到這樣的錯誤:

Compilation Error 
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0118: 'System.Web.UI.WebControls.CheckBox' is a 'type' but is used like a 'variable' 

Source Error: 

Line 109:  for (int i = 0; i < 30; i++) 
Line 110:  { 
Line 111:   array[i] = CheckBox(i).Checked; 
Line 112:  } 
Line 113: 

我究竟想知道我可以使用複選框的ID與同一個變量,如:

i = 15; 
CheckBox(i).Checked 

代替:

CheckBox15.Checked 

ASP.net 4和c# 謝謝你們。

回答

1

試試這個:

bool[] array = new bool[30]; 
for (int i = 0; i < 30; i++) 
{ 
    array[i] = ((CheckBox)Page.FindControl("CheckBox" + i.ToString)).Checked; 
} 

UPDATE:

我剛剛創建了一個新的項目只是爲了測試,如果代碼工作,和它的工作。真。 :|

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
     <asp:CheckBox ID="CheckBox2" runat="server" /> 
     <asp:CheckBox ID="CheckBox3" runat="server" /> 
     <asp:CheckBox ID="CheckBox4" runat="server" /> 
     <asp:CheckBox ID="CheckBox5" runat="server" /> 
     <asp:CheckBox ID="CheckBox6" runat="server" /> 
     <asp:CheckBox ID="CheckBox7" runat="server" /> 
     <asp:CheckBox ID="CheckBox8" runat="server" /> 
     <asp:CheckBox ID="CheckBox9" runat="server" /> 
     <asp:CheckBox ID="CheckBox10" runat="server" /> 
    </div> 
    </form> 
</body> 

代碼隱藏:

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     bool[] array = new bool[10]; 
     for (int i = 1; i <= 10; i++) 
     { 
      array[i] = ((CheckBox)Page.FindControl("CheckBox" + i.ToString())).Checked; 
     } 
    } 
} 
+0

它帶着錯誤:「異常詳細信息:System.NullReferenceException:對象不設置爲一個對象源錯誤的一個實例:線路111:array [代號] =((CheckBox)Page.FindControl(「CheckBox」+ i.ToString()))。Checked;「 但是,謝謝@vhinn可怕 –

+0

你有一個複選框,其ID是「CheckBox0」?如果沒有,當然它會返回NULL,因爲它沒有看到這樣的控件。改變你的循環從1開始,而不是0! –

+0

這不是因爲那個。我做了你告訴結果是一樣的,我也做了:bool con =((CheckBox)Page.FindControl(「CheckBox10」))。這是一樣的。你會不知道我是否也說過:string str =((CheckBox)Page.FindControl(「CheckBox10」))。ID.ToString(); 和結果是一樣的。我認爲它完全不能用這種方法精細控制! –