2017-07-20 2 views
0

私が作成しているAsp.netのWebサイトでは、Repeaterを使用して2つのデータベースから重複または欠落したエントリに関する文字列のリストを表示します。 Repeaterリストに同じ番号の文字列に対応する1つのSQL文を持つSQL文の並行で作成された別のストリングのリストがあります。リスト内の文字列の数は、選択したデータベースによって異なります。範囲は0〜100+です。C#Repeaterで行数が異なるCheckBox/Otherメソッドで異なる文字列を返すことができる

質問:Repeater行の数が不明なので、未知数のチェックボックス/ボタン(各行に1つ)を生成する方法を見つけることを試みています。クリックすると、チェックボックス/ボタンは、別の方法で行の他のリストに適切なSQL文を見つけます。どのように可変数のチェックボックスを作成できるかについて誰かが考えていますか?

答えて

1

これは、ボタンにCommandArgumentを追加し、ClickではなくCommandを割り当てて行うことができます。

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:Label ID="Label1" runat="server" Text='<%# Eval("myColumn") %>'></asp:Label> 
     <br /> 
     <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("ID") %>' OnCommand="Button1_Command" Text="Button" /> 
     <hr /> 
    </ItemTemplate> 
</asp:Repeater> 

<asp:Label ID="Label2" runat="server" Text=""></asp:Label> 

そして、コード内での背後にあるチェックボックスを読みたい場合は、あなたが背後にあるコードでslightyより多くのコードが必要になりますOnCommand

protected void Button1_Command(object sender, CommandEventArgs e) 
{ 
    Label2.Text = e.CommandArgument.ToString(); 
} 

を扱います。

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:Label ID="Label1" runat="server" Text='<%# Eval("field01") %>'></asp:Label> 
     <br /> 
     <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean(Eval("itemid")) %>' /> 
     <br /> 
     <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("itemid") %>' OnCommand="Button1_Command" Text="Button" /> 
     <hr /> 
    </ItemTemplate> 
</asp:Repeater> 

protected void Button1_Command(object sender, CommandEventArgs e) 
{ 
    Button btn = sender as Button; 
    RepeaterItem item = (RepeaterItem)btn.NamingContainer; 
    CheckBox cb = item.FindControl("CheckBox1") as CheckBox; 

    Label2.Text = "Item with ID " + e.CommandArgument + " has checkbox " + cb.Checked; 
} 
+0

未知数の行を持つリピータの各行に対してチェックボックス/ボタンを生成できますか? – SkiaEsh

+0

はい、それはRepeaterが 'ItemTemplate'内のアイテムで何をするのかです – VDWWD

+0

ありがとうございました。 – SkiaEsh

関連する問題