Member 12772491 Ответов: 1

Как использовать один и тот же пользовательский элемент управления несколько раз на странице aspx


Как использовать один и тот же пользовательский элемент управления несколько раз на странице aspx и загрузить пользовательский элемент управления на вкладке click.

Я определил пользовательский элемент управления (UDTControl. ascx) и объявил его в каждой панели вкладок. При щелчке tab, основываясь на индексе tab, я передаю tabname функции ascx и вызываю sp для загрузки данных в таблицу.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="temp.aspx.cs" Inherits="WebUI.temp" %>
   <%@ Register Src="Shared/UDTControl.ascx" TagName="UDTControl" TagPrefix="UserControl" %>
   <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

   <asp:Content ID="Content1" ContentPlaceHolderID="PublicContent" runat="server">
     <script type="text/javascript">
          function ActiveTabChanged(sender, e) {
              var ActiveIndex = sender.get_activeTabIndex();
              if (ActiveIndex == 0) {
                  UDTControlFuncAscx("abc");
              }
              if (ActiveIndex == 1) {
                  UDTControlFuncAscx("xyz");
              }
              if (ActiveIndex == 2) {
                  UDTControlFuncAscx("mno");
              }
          }
    </script>
     <asp:UpdatePanel ID="UpdatePanel1" runat="server">
       <ContentTemplate>
         <cc1:TabContainer ID="DashboardContainer" runat="server"OnClientActiveTabChanged="ActiveTabChanged" >
                <cc1:TabPanel ID="TabPanel1" runat="server" HeaderText="abc">
                    <UserControl:UDTControl ID="id1" runat="server"/>
                </cc1:TabPanel>
                <cc1:TabPanel ID="TabPanel2" runat="server" HeaderText="xyz">>
                      <UserControl:UDTControl ID="id2" runat="server"/>
                </cc1:TabPanel>
                <cc1:TabPanel ID="TabPanel3" runat="server" HeaderText="mno">>
                      <UserControl:UDTControl ID="id3" runat="server"/>
                 </cc1:TabPanel>
        </ContentTemplate>
   </asp:UpdatePanel>
   </asp:Content>


Цитата:
и вот мой ascx код


<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UDTControl.ascx.cs" Inherits="WebUI.Shared.UDTControl" %>
    <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
    
    <%@ Register Assembly="WebUI" TagPrefix='SFX' Namespace='WebUI.Shared' %>
     
     <script type="text/javascript">
         function DashboardFuncAscx(ActiveTab) {
             if (ActiveTab == "abc") {
             //call abc sp using page method and load data on table
             }
             if (ActiveTab == "xyz") {
                 //call xyz sp and load on table
             }
         }
     </script>
    
    <asp:UpdatePanel ID="DashboardPanel" runat="server">
        <ContentTemplate>
             <asp:Panel ID="Dashboard1" runat="server">
                 <table id="tableid" > </table>
            </asp:Panel>
        </ContentTemplate>          
    </asp:UpdatePanel>


Что я уже пробовал:

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

1 Ответов

Рейтинг:
2

Ralf Meier

Отправитель в вашем методе "ActiveTabChanged" имеет тип Object. Объект ничего не знает о ".get_activeTabIndex".
Вы должны назначить отправителю тип, соответствующий вашему элементу управления, и попросить этот элемент". get_activeTabIndex " - я думаю, что теперь вы получите правильный ответ ...


Member 12772491

Спасибо за ваши отзывы. На самом деле я правильно получаю идентификатор индекса на основе щелчка по вкладке и соответствующего условия if, которое также выполняется. Однако проблема в другом. Представьте себе, что первая вкладка пуста и нет пользовательского элемента управления, на второй вкладке нажмите кнопку ее загрузки и отображения правильно, но когда я нажимаю 3-ю вкладку, sp запускается и данные загружаются. но он не отображается на экране 3-й вкладки. его данные фактически заполняются на второй вкладке, которую невозможно увидеть.

Ralf Meier

Мое предложение основано на тексте, который вы написали в разделе "Что я пробовал". Если вы не получите результат от отправителя, он может быть равен 0. Это привело бы к неправильному поведению.