Nano Hash - криптовалюты, майнинг, программирование

Вызов метода С# на дисплее ModalPopup

Я совсем недавно начал разрабатывать веб-формы asp.net, и у меня такая ситуация, что я просто не могу понять это самостоятельно.

У меня есть кнопка ссылки, при нажатии на которую я хотел бы открыть модальное всплывающее окно. Модальное всплывающее окно содержит панель с сеткой, которую я хотел бы связать (заполнить) до того, как будет показано модальное всплывающее окно на основе метода С#.

По сути, мне нужно сделать, когда пользователь нажимает кнопку,

(1) заполняется вид сетки внутри модального всплывающего окна

(2) будет отображаться модальное всплывающее окно, показывающее пользователю полностью заполненную сетку.

Вот фрагменты кода:

<%-- Relationship Type--%>
    <tr style="background-color:#eee;">      
        <td class="borderTd"> 
          <asp:LinkButton ID="lnkRelTypes" runat="server" Text="Relationship Type:" OnClick="btPopulateRelTypes_Click" > </asp:LinkButton>
       </td>  
    <td style=" border:0;">
            <asp:DropDownList ID="ddlRelationshipType" runat="server" TabIndex="3" CssClass="field"> </asp:DropDownList>
        </td>
    </tr>
    <ajaxToolkit:ModalPopupExtender ID="modalppSearchRelTypes" runat="server" TargetControlID="lnkRelTypes" 
                                        PopupControlID="panelMaintainRelTypes" BackgroundCssClass="modalBackground" OkControlID="OkButton"
                                        DropShadow="true" />

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

Я попытался создать функцию javascript, которая вызывала бы метод (как веб-метод), назначая ему событие OnClientClick кнопки, но при этом внутри моего статического веб-метода я не могу использовать какие-либо элементы управления страницей, такие как gridview, который Я пытаюсь заселить.

ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ, предоставляющее JS, используемый для вызова WebMethod, который будет заполнять представление сетки

<script type="text/javascript">
     function PopulateRelTypes() 
     {
         PageMethods.GetResult(OnSucess, OnError);

         function OnSucess(result)
         { }

         function OnError(result) {
             alert(result);
         }
     }

Код С#:

[WebMethod]
public static string GetResult()
{
    string result = GetRelTypes();
    return result;

}

Сообщение об ошибке: для нестатического поля, метода или свойства «GetRelTypes()» требуется ссылка на объект.

Это была функция JS, которая была назначена событию OnClientClick кнопки ссылки, но она не позволяла мне использовать какие-либо элементы управления страницей (например, gridview, метки и т. д.).


ПОЗЖЕ позже ИЗМЕНИТЬ :)

Я думаю, что забыл упомянуть кое-что важное, а именно то, что и кнопка ссылки, и вид сетки из модального всплывающего окна находятся внутри UpdatePanels. Поэтому обратная передача страницы никогда не запускается при нажатии кнопки ссылки.


Единственный случай, когда я заставил это работать, - это создать вторую кнопку внутри модального всплывающего окна, которая заполнила бы мое представление сетки, вызвав метод GetRelTypes() (который был изменен на пустоту, а не на строку), но это не так, как я хочу, чтобы это было...

Любые предложения, пожалуйста?


Мое решение:

Для кнопки ссылки из основной формы я добавил событие OnClientClick для вызова функции JS следующим образом:

Кнопка ссылки:

<asp:LinkButton ID="lnkRelTypes" runat="server" Text="Relationship Type:" OnClientClick="PopulateRelTypes();" > </asp:LinkButton>

JS-функция:

<script type="text/javascript">
     function PopulateRelTypes() 
     {
         document.getElementById('<%= btPopupLoad.ClientID %>').click();        
     }
</script>

Функция javascript вызывает скрытую кнопку, которую я разместил внутри модального всплывающего окна. Эта скрытая кнопка имеет событие щелчка на стороне сервера, которое заполняет вид сетки, как мне нужно:

Скрытая кнопка Modalpopup:

<asp:Button ID="btPopupLoad" runat="server" Text="Load" 
                CssClass="button" onclick="btPopupLoad_Click" style="display:none;"/> 

Метод С# для получения данных:

protected void btPopupLoad_Click(object sender, EventArgs e)
{
    GetRelTypes();
}

Слава богу, я наконец нашел решение этой проблемы, это сводило меня с ума!!! :) Я просто надеюсь, что это решение когда-нибудь поможет другим (например, мне)!


  • Что за минус?!? Я сказал, что я новичок в этом. 12.06.2014
  • Не знаю, почему за это проголосовали. Но можете ли вы опубликовать свой JS? 12.06.2014
  • @AndrewPolland - смотрите мой обновленный пост. 12.06.2014

Ответы:


1

Для кнопки ссылки из основной формы я добавил событие OnClientClick для вызова функции JS следующим образом:

Кнопка ссылки:

<asp:LinkButton ID="lnkRelTypes" runat="server" Text="Relationship Type:" OnClientClick="PopulateRelTypes();" > </asp:LinkButton>

JS-функция:

<script type="text/javascript">
     function PopulateRelTypes() 
     {
         document.getElementById('<%= btPopupLoad.ClientID %>').click();        
     }
</script>

Функция javascript вызывает скрытую кнопку, которую я разместил внутри модального всплывающего окна. Эта скрытая кнопка имеет событие щелчка на стороне сервера, которое заполняет вид сетки, как мне нужно:

Скрытая кнопка Modalpopup:

<asp:Button ID="btPopupLoad" runat="server" Text="Load" 
                CssClass="button" onclick="btPopupLoad_Click" style="display:none;"/> 

Метод С# для получения данных:

protected void btPopupLoad_Click(object sender, EventArgs e)
{
    GetRelTypes();
}
13.06.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..