在ModalPopup显示中调用C#方法

塞尔久

我最近才开始开发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" />

问题在于,当我调试它时,当我按下链接按钮时,该事件永远不会触发,并且不会弹出模态弹出窗口,因为网格视图从未填充过,因此其中没有任何内容。

我尝试创建一个javascript函数,该函数将调用方法(作为Web方法),将其分配给按钮的OnClientClick事件,但是这样做,在我的静态Web方法中,我无法使用任何页面控件,例如gridview我正在尝试填充。

稍后的编辑提供了用于调用将填充gridview的WebMethod的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,标签等)


稍后再编辑:)

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


我使之起作用的唯一情况是在模式弹出窗口中创建第二个按钮,该第二个按钮将通过调用GetRelTypes()方法(已更改为void而不是字符串)填充我的gridview,但这不是我的方式希望成为...

有什么建议吗?


我的解决方案:

对于主表单中的链接按钮-我为其添加了一个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函数会调用一个隐藏的按钮,该按钮已放置在模式弹出窗口中。这个隐藏的按钮有一个服务器端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();
}

谢天谢地,我终于找到了解决方案,这让我发疯了!!!:)我只是希望这种解决方案有一天能对其他人(作为我)有所帮助!

塞尔久

对于主表单中的链接按钮-我为其添加了一个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函数会调用一个隐藏的按钮,该按钮已放置在模式弹出窗口中。这个隐藏的按钮有一个服务器端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();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章