Вызовите метод управления пользователем один раз с несколькими экземплярами управления пользователем на одной странице - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть пользовательский элемент управления с методом для получения данных из базы данных.Я использую главную страницу с вкладками и мне нужно показать ту же информацию дважды.Есть ли способ иметь 2 пользовательских элемента управления на главной странице, но метод вызывается только один раз и заполнять 2 различных элемента управления?Метод получает данные из БД, и, кажется, напрасно вызывать его дважды для одной и той же вещи.

public partial class control : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public void bindcontrol(int id, string pie)
    {
        //get info from database and bind it to a gridview
    }
}

главная страница

<%@ Register TagPrefix="z" TagName="zz" Src="control.ascx" %>

 <div role="tabpanel" class="tab-pane" id="passport">
                    <z:zz ID="ctrl1" runat="server" />
 </div>
 <div role="tabpanel" class="tab-pane" id="passport">
                    <z:zz ID="ctrl2" runat="server" />
</div>

//code behind - which is what I'm trying to avoid:
 ctrl1.bindSummary(id, strPIE);
 ctrl2.bindSummary(id, strPIE);

1 Ответ

0 голосов
/ 20 декабря 2018

Вы не можете выполнить такой инкапсулированный метод.Вы можете сделать что-то подобное с делегатами.Если вы хотите выполнить метод на всех элементах управления определенного типа, другим вариантом будет итерация элементов управления на вкладке, например:

  foreach(WebControl c in MyTabPage.Controls)
  {
     if(c is MyControlType)
     {
       ((MyControlType)c).PerformTask();//Cast to your type to call method on type
     }   
  }

или более компактный с использованием linq.

foreach(WebControl control in Parent.Controls.OfType<MyControlType>)
    ((MyControlType)c).PerformTask();

Или используя для каждого делегата

Parent.Controls.OfType<MyControlType>.ForEach(p => PerformTask());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...