2

TreeViewAJAXコントロールから への変換に関するアドバイスが必要LinkButtonです。なんで?ASP.NET ページを軽くするため。現在、NodesTreeViewを選択すると、そのノードに関連するレコードがグリッドに表示されます。この実装により、ページが重くなります。そこで、これを に変更することにしましたLinkButtons

何をする必要があるのか​​、検討する必要があるのか​​ 、それともこれが良い考えなのか知りたいだけですか?正直なところ、これが良いか悪いかは別として、私はまだこれを行う必要があります。

私の最初の理解は、これが list のようになるということex: bullet listです。

4

1 に答える 1

2

次の回答はあなたのコメントに基づいており、他の質問で提供された回答に基づいています。

次の例では、Repeaterの代わりにListViewを使用しています。ListViewsは、リピーターよりもはるかに柔軟性が高いため、優れています。さらに、以下のサンプルコードでわかるように、ネストされた/子のListViewのバインドとネストされた/孫のListViewのバインドはすべて、コードビハインドなしで宣言的に実行できます

次のコードが生成するものの例

ここに画像の説明を入力してください

ASPX

<asp:ListView runat="server" ID="lvw">
    <LayoutTemplate>
        <ul>
            <li id="itemPlaceholder" runat="server" />
        </ul>
    </LayoutTemplate>
    <ItemTemplate>
        <li>    
            <asp:LinkButton runat="server" CommandArgument='<%# Eval("Name")%>'><%# Eval("Name")%></asp:LinkButton>
            <asp:ListView runat="server" ID="lvw2" DataSource='<%# Eval("Children")%>'>
                <LayoutTemplate>
                    <ul>
                        <li id="itemPlaceholder" runat="server" />
                    </ul>
                </LayoutTemplate>
                <ItemTemplate>
                    <li><asp:LinkButton runat="server" CommandArgument='<%# Eval("Name")%>'><%# Eval("Name")%></asp:LinkButton>
                        <asp:ListView runat="server" ID="lvw3" DataSource='<%# Eval("Children")%>'>
                            <LayoutTemplate>
                                <ul>
                                    <li id="itemPlaceholder" runat="server" />
                                </ul>
                            </LayoutTemplate>
                            <ItemTemplate>
                                <li><asp:LinkButton runat="server" CommandArgument='<%# Eval("Name")%>'><%# Eval("Name")%></asp:LinkButton></li>
                            </ItemTemplate>
                        </asp:ListView>
                    </li>
                </ItemTemplate>
            </asp:ListView>
        </li>
    </ItemTemplate>
</asp:ListView>

C#

lvw.DataSource = personList;
lvw.DataBind();

ご覧のとおり、C#コードでは、次のように「Person」のリストを作成しました。各Personオブジェクトには子Personオブジェクトのリストがあり、各子Personオブジェクトには子Personオブジェクトのリストがあります。この方法でオブジェクトを作成することにより、ListViewのバインドは私が示したのと同じくらい簡単です。以下のPersonオブジェクトを使用して簡単なサンプルを実行し、自分で確認できるようにします。

人物オブジェクト

public class Person
{
    public string name { get; set; }
    public List<Person> Children { get; set; }
}

テストでは、次のようにPage_Loadメソッドを作成できます。

protected void Page_Load(object sender, EventArgs e)
    {
        List<Person> personList = new List<Person>();
        Person person1 = new Person() { name = "Child 1" };
        Person person2 = new Person() { name = "Child 2" };
        List<Person> childPersonList1 = new List<Person>();
        childPersonList1.Add(person1);
        childPersonList1.Add(person2);
        Person person3 = new Person() { name = "Person 1" };
        person3.Children = childPersonList1;
        personList.Add(person3);
        Person person4 = new Person() { name = "Child 3" };
        Person person10 = new Person() { name = "Grandchild 1" };
        Person person11 = new Person() { name = "Grandchild 2" };
        Person person12 = new Person() { name = "Grandchild 3" };
        List<Person> grandchildPersonList1 = new List<Person>();
        grandchildPersonList1.Add(person10);
        grandchildPersonList1.Add(person11);
        grandchildPersonList1.Add(person12);
        person4.Children = grandchildPersonList1;
        Person person5 = new Person() { name = "Child 4" };
        List<Person> childPersonList2 = new List<Person>();
        childPersonList2.Add(person4);
        childPersonList2.Add(person5);
        Person person6 = new Person() { name = "Person 2" };
        person6.Children = childPersonList2;
        personList.Add(person6);
        Person person7 = new Person() { name = "Child 5" };
        Person person8 = new Person() { name = "Child 6" };
        List<Person> childPersonList3 = new List<Person>();
        childPersonList3.Add(person7);
        childPersonList3.Add(person8);
        Person person9 = new Person() { name = "Person 3" };
        person9.Children = childPersonList3;
        personList.Add(person9);

        lvw.DataSource = personList;
        lvw.DataBind();
    }

リピーターとリストビューの違いの詳細については、次のStackOverflowの質問を参照してください:リピーター、リストビュー、データリスト、データグリッド、グリッドビュー...どちらを選択しますか?

于 2011-07-20T02:45:24.480 に答える