Добавить список самостоятельно созданных веб-элементов управления в просмотр списка в коде позади не удается - PullRequest
2 голосов
/ 19 августа 2010

У меня есть список, который я хотел бы заполнить самостоятельно созданными пользовательскими элементами управления. Но проблема в том, что свойства в пользовательском элементе управления не установлены.Пользовательские элементы управления отображаются, но введенные мной значения свойств не установлены.Это почему?

Вот код aspx.

    <div id="productView" class="productsMain">
    <div id="groupHeader" class="productsGroupHeader">
        <asp:Label ID="lblGroupHeader" runat="server" Text="Gruppe" />
    </div>
    <asp:ListView ID="pListView" runat="server">
        <LayoutTemplate>
            <ul class="productListView" id="pList">
                <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder>
            </ul>
        </LayoutTemplate>
        <ItemTemplate>
            <li>
                <uc:Product ID="ucProduct" runat="server" />
            </li>
        </ItemTemplate>
        <EmptyDataTemplate>
            <div>
                Beklager - det er for tiden ingen varer i denne produktgruppen.
            </div>
        </EmptyDataTemplate>
    </asp:ListView>     
</div>

А вот код

protected void Page_Load(object sender, EventArgs e)
{  
    Control product1 = LoadControl(@"~/UserControls/Product.ascx");
    ((UserControls_Product)product1).Test = 9999; 
    Control product2 = LoadControl(@"~/UserControls/Product.ascx");
    ((UserControls_Product)product2).Test = 8888; 

    List<UserControls_Product> l = new List<UserControls_Product>();
    l.Add((product1 as UserControls_Product));
    l.Add(product2 as UserControls_Product));       
    pListView.DataSource = l;
    pListView.DataBind(); 
}

1 Ответ

1 голос
/ 19 августа 2010

Я снова обдумываю проблему здесь, и я думаю, что она совершенно иная, как вам нужно ее решать.

Вы создаете элементы управления и отправляете их в повторитель, но сам повторитель создает одинаковые элементы управления в каждой строке. Вам необходимо отправить только параметры.

Вы составляете список с помощью int и отправляете в свой контроль эти значения. Тогда это до вашего контроля, чтобы сделать то, что ему нужно. Например.

protected void Page_Load(object sender, EventArgs e)
{  
    List<int> MyParam = new List<int>();

    MyParam.add(9999);
    MyParam.add(8888);

    pListView.DataSource = MyParam;
    pListView.DataBind(); 
}

public int GetTheProductID(object oItem)
{
    return (int)oItem;
}

А вот как вы получаете и отправляете свои параметры под свой контроль.

<ItemTemplate>
    <li>
        <uc:Product ID="ucProduct" runat="server" ProductID="<%#GetTheProductID(Container.DataItem)%>" />
    </li>
</ItemTemplate>

Теперь у вас под контролем есть открытый ProductID, который вы можете использовать позже в Page_Load ()

Вы можете использовать не только int, но и класс или структуру списка для отправки большого количества данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...