2012-03-29 29 views
0

Hy all、チェックボックスから選択した値をテーブルの行に入れます。

私はWebアプリケーションを開発していますが、チェックボックスリストを使用しようとしています。私はそのチェックボックスリストの各選択された項目のテーブルに新しい行を作成するためにしたい。私は5つの項目を持っていると私は3をチェックし、私は3行と各行の選択項目を表示するテーブルをしたい。私がチェックしているかのアイテムを取得:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     string str = string.Empty; 

     foreach (ListItem item in check.Items) 
     { 
      str += item.Value; 
     } 
    } 

私の質問は:どのように私は、選択した値を持つテーブルを作成できますか?私はasp.netアプリケーションでC#を使用しています

答えて

2

動的に作成されるので、このポストバックごとにこのテーブルを再作成する必要があります。

http://weblogs.asp.net/infinitiesloop/archive/2006/08/30/TRULY-Understanding-Dynamic-Controls-_2800_Part-3_2900_.aspx

ここでは、サンプルコードを働いています:

<asp:CheckBoxList ID="check" runat="server"> 
    <asp:ListItem Text="Item 1" Value="1"></asp:ListItem> 
    <asp:ListItem Text="Item 2" Value="2"></asp:ListItem> 
    <asp:ListItem Text="Item 3" Value="3"></asp:ListItem> 
</asp:CheckBoxList> 
<asp:Button ID="Button1" runat="server" Text="Apply Selection" OnClick="Button1_Click" /> 
<asp:Table ID="TblCheck" runat="server"></asp:Table> 

分離コード:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack) RecreateTable(); 
} 

private void RecreateTable() 
{ 
    var selected = this.check.Items.Cast<ListItem>().Where(i => i.Selected); 
    foreach (var item in selected) 
    { 
     TableRow row = new TableRow(); 
     TableCell cell = new TableCell(); 
     Label lbl = new Label(); 
     lbl.Text = item.Text; 
     cell.Controls.Add(lbl); 
     row.Cells.Add(cell); 
     this.TblCheck.Rows.Add(row); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //RecreateTable(); 
} 

ボタンクリックハンドラは、それがとにかくをPage_Loadから作成されますときにそれを作成するためにも、必要はありません。

関連する問題