Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > User control


Автор: Artemon 29.7.2008, 08:45
Создал User Control,
как передать ссылку на этот контрол к примеру в конструктор класса? Ведь внутри класса этот контрол не виден.

Автор: Idsa 29.7.2008, 10:01
Насколько я понял, у Вас есть User Control и класс, у которого есть конструктор, принимающий этот User Control. Тогда в чем проблема передачи?
Код

MyClass myClass = new MyClass(userControlInstance);

Автор: KLUBS 29.7.2008, 10:18
А на сколько я понял
Код

class MyClass : UserControl
{
private MyClass obj;
public MyClass()
{
}
}

Автор: Partizan 29.7.2008, 10:44
KLUBS, мне кажется Idsa  правильнее понял...
а аффтару наверно не хватает reference-а на сборку с контролом...ну или неймспейс не прорезолвен...

Автор: Artemon 29.7.2008, 11:48
Idsa правильно понял, но дело в том что контрол у меня не в отдельной сборке, а в проекте сайта,


В коде страницы я запросто могу создать объект: 
        MyClass myClass = new MyClass(userControlInstance);


Но вот в классе, отличном от класса страницы я его создать не могу, т.к. не видно этот тип.

Добавлено через 2 минуты и 13 секунд
Вот собственно сам компонент:
Код

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using Commerce.Common;

public partial class Modules_CategoryChecker : System.Web.UI.UserControl
{
    private List<Category> _LstCategories = null;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public List<Category> LstCategories
    {
        get { return _LstCategories; }
        set 
        {
            ListBoxCategories.Items.Clear();
            _LstCategories = value; 

            foreach(Category C in _LstCategories)
            {
                string Path = string.Empty;
                GetSubCats(C, ref Path);
                ListItem li = new ListItem(Path, C.CategoryID.ToString());
                ListBoxCategories.Items.Add(li);
            }
        }
    }

    /// <summary>
    /// Get sub categories path
    /// </summary>
    /// <param name="Cat"></param>
    /// <param name="Path"></param>
    public void GetSubCats(Category Cat, ref string Path)
    {
        Path += "->" + Cat.CategoryName;
        
        if(Cat.ParentID != 0)
        {
            GetSubCats(CategoryController.Find(Cat.ParentID), ref Path);
        }
    }

    public void AddCategory(Category Cat)
    {
        if (_LstCategories == null) _LstCategories = new List<Category>();

        _LstCategories.Add(Cat);
    }

    public Category SelectedCategory
    {
        get 
        {
            return ListBoxCategories.SelectedIndex != -1 ? _LstCategories[ListBoxCategories.SelectedIndex] : null;
        }
    }
}


Автор: Idsa 29.7.2008, 12:03
Цитата(Artemon @  29.7.2008,  15:48 Найти цитируемый пост)
Но вот в классе, отличном от класса страницы я его создать не могу, т.к. не видно этот тип.

Какой тип не видно? MyClass или Modules_CategoryChecker? Если MyClass, то, может, он у Вас объявлен без модификатора public?

Автор: Artemon 29.7.2008, 14:39
Не видно каласс Modules_CategoryChecker, внутри класса MyClass.

Например класс Button (стандартный класс) - замечательно видно внутри класса MyClass.

Добавлено через 3 минуты и 49 секунд
Вообще кто-нибудь пробовал передавать ссылки на свои компоненты(ascx компоненты) в своиже классы ?

Автор: Idsa 29.7.2008, 15:06
Artemon, не хочется гадать, что и где у Вас не так. Проблему удастся решить быстрее, если Вы прикрепите к сообщению архив с проектом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)