0

GridView 内に項目テンプレートを作成しました。

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
    CellPadding="3" GridLines="Horizontal" onrowdatabound="GridView1_RowDataBound" >
    <AlternatingRowStyle BackColor="#F7F7F7" />
    <Columns>
        <asp:TemplateField HeaderText="ID">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Enabled='<%# Eval("id") %>' 
                    Text="Label"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

今私の問題は、いくつかの重複した ID があり、一意の ID のみを表示したいため、「id」をハッシュ セットに格納していることです。

var id = new HashSet<String>();
id.Add("1");
id.Add("1");
id.Add("2");
id.Add("3");
id.Add("4");
id.Add("5");
Gridview1.DataSource=id;
Gridview1.DataBind();

Eval メソッドに問題があると思います。Hashset から値を取得しているとは思いません。

Hashste から Eval にデータをバインドする方法を誰かに説明してもらえますか?

また、ItemTemplate を使用していなくても機能していました。つまり、Hashset 値から直接 gridiew を埋めることができます。ただし、ネストされたグリッドビューを作成しようとしているため、アイテム テンプレートを使用しています。

ご不明な点がございましたら、お知らせください。

4

1 に答える 1

1

変数に名前を付けるという理由だけでid、基になる型にはプロパティが含まれませんid

匿名型をDataSource次のように使用できます。

var ids = new HashSet<String>();
ids.Add("1");
ids.Add("1");
ids.Add("2");
ids.Add("3");
ids.Add("4");
ids.Add("5");
Gridview1.DataSource = ids.Select(id => new { id }).ToList();
Gridview1.DataBind();

Enabledただし、からブール プロパティ ( )を設定しようとしていIdます。それは間違っているようです。

(倍数が含まれているため、の名前をHashSetからidに変更したことに注意してください)ids

于 2013-06-18T14:48:04.680 に答える