在ModalPopup显示上调用c#方法

本文关键字:方法 调用 ModalPopup 显示 | 更新日期: 2023-09-27 18:08:12

我最近开始开发asp.net web表单,我有这种情况,我只是不能自己弄清楚。

我有一个链接按钮,当点击时,我想打开一个模态弹出窗口。模态弹出窗口包含一个面板,其中有一个网格视图,我想在模态弹出窗口显示之前绑定(填充)基于c#方法。

基本上,我需要做的是,当用户点击按钮时,

(1)模式弹出框内的gridview被填充

(2)将显示模态弹出窗口,向用户显示一个完全填充的gridview。

下面是代码片段:

<%-- 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" />

问题是,当我调试它,当我按下链接按钮,事件永远不会被触发和模式弹出它显示,当然,没有任何东西在它,因为gridview从来没有填充。

我已经尝试创建一个javascript函数,调用方法(作为一个webmethod)分配它的OnClientClick事件的按钮,但通过这样做,在我的静态web方法我不能使用任何页面控件,如gridview,我试图填充。

LATER EDIT提供用于调用WebMethod来填充gridview的JS

<script type="text/javascript">
     function PopulateRelTypes() 
     {
         PageMethods.GetResult(OnSucess, OnError);
         function OnSucess(result)
         { }
         function OnError(result) {
             alert(result);
         }
     }
c#代码:

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

错误消息:非静态字段、方法或属性'GetRelTypes()'需要对象引用

这是在链接按钮的OnClientClick事件上分配的JS函数,但它不允许我使用任何页面控件(例如:gridview, labels等)


LATER LATER EDIT:)

我想我忘了提到一些重要的事情,那就是链接按钮和gridview从modalpopup都在UpdatePanels。因此,当单击链接按钮时,页面的回发永远不会被触发。


我做这个工作的唯一情况是创建第二个按钮,在模态弹出框内,这将通过调用GetRelTypes()方法来填充我的gridview(它被更改为void而不是字符串),但这不是我想要的方式…

有什么建议吗?

我的解决方案:

对于主表单中的链接按钮,我添加了一个OnClientClick事件来调用JS函数,如下所示:

LinkButton:

<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函数调用一个隐藏的按钮,我已经放置在模态弹出。这个隐藏的按钮有一个服务器端clickevent,它填充gridview,因为我需要:

Modalpopup隐藏按钮:

<asp:Button ID="btPopupLoad" runat="server" Text="Load" 
                CssClass="button" onclick="btPopupLoad_Click" style="display:none;"/> 
c#中获取数据的方法:
protected void btPopupLoad_Click(object sender, EventArgs e)
{
    GetRelTypes();
}
感谢上帝,我终于找到了解决这个问题的办法,它快把我逼疯了!:)我只希望有一天这个解决方案能帮助到其他人(像我一样)!

在ModalPopup显示上调用c#方法

对于来自主表单的链接按钮-我已经添加了一个OnClientClick事件来调用JS函数,如下所示:

LinkButton:

<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函数调用一个隐藏的按钮,我已经放置在模态弹出。这个隐藏的按钮有一个服务器端clickevent,它填充gridview,因为我需要:

Modalpopup隐藏按钮:

<asp:Button ID="btPopupLoad" runat="server" Text="Load" 
                CssClass="button" onclick="btPopupLoad_Click" style="display:none;"/> 
c#中获取数据的方法:
protected void btPopupLoad_Click(object sender, EventArgs e)
{
    GetRelTypes();
}