繁体   English   中英

如何在C#中的另一个类中找到表单

[英]How do I find a Form from another class in c#

我有以下aspx页面,该页面具有一系列用于获取参数的下拉框,以及一系列iFrame,这些iFrame会根据参数加载单个图表。 页面的主体如下所示:

<body>
<form id="bmBehaviorForm" runat="server">
    <div class="row">
        <div runat="server">
            <asp:DropDownList ID="ddSchoolYear" AutoPostBack="true" OnSelectedIndexChanged="ddValueChanged" runat="server"></asp:DropDownList>
            <asp:DropDownCheckBoxes ID="ddSchoolType" UseButtons="true" UseSelectAllNode="true" OnSelectedIndexChanged="ddValueChanged" runat="server">
                <Style2 DropDownBoxBoxWidth="200" SelectBoxCssClass="selectHeight" />
                <Texts SelectBoxCaption="School Type" />
            </asp:DropDownCheckBoxes>
            <asp:DropDownCheckBoxes ID="ddSchools" UseButtons="true" UseSelectAllNode="true" OnSelectedIndexChanged="ddValueChanged" runat="server">
                <Style2 DropDownBoxBoxWidth="350" SelectBoxCssClass="selectHeight" />
                <Texts SelectBoxCaption="Schools" />
            </asp:DropDownCheckBoxes>
            <asp:DropDownCheckBoxes ID="ddGrades" UseButtons="true" UseSelectAllNode="true" RepeatColumns="2" RepeatDirection="Vertical" 
                OnSelectedIndexChanged="ddValueChanged" runat="server">
                <Style2 DropDownBoxBoxWidth="150" SelectBoxCssClass="selectHeight" />
                <Texts SelectBoxCaption="Grades" />
            </asp:DropDownCheckBoxes>
            <asp:DropDownCheckBoxes ID="ddEvent" UseButtons="true" UseSelectAllNode="true" OnSelectedIndexChanged="ddValueChanged" runat="server">
                <Style2 DropDownBoxBoxWidth="400" DropDownBoxBoxHeight="5000" SelectBoxCssClass="selectHeight" />
                <Texts SelectBoxCaption="Behavior Events" />
            </asp:DropDownCheckBoxes>
            <asp:DropDownCheckBoxes ID="ddResolution" UseButtons="true" UseSelectAllNode="true" OnSelectedIndexChanged="ddValueChanged" runat="server">
                <Style2 DropDownBoxBoxWidth="400" DropDownBoxBoxHeight="5000" SelectBoxCssClass="selectHeight" />
                <Texts SelectBoxCaption="Resolutions" />
            </asp:DropDownCheckBoxes>
        </div>
    </div>

    <div class="row rowPaddingTop">
        <iframe name="iName_iSchools" id="iSchools" style="border: none;" width="775px" height="500px" 
            src="behaviorbySchool.aspx"></iframe>
        <iframe name="iName_iGrades" id="IGrades" style="border: none;" width="775px" height="350px"
            src="behaviorbyGrade.aspx"></iframe>
        <iframe name="iName_iMonths" id="IMonths" style="border: none;" width="775px" height="350px"
            src="behaviorbyMonth.aspx"></iframe>
        <iframe name="iName_iLocations" id="ILocations" style="border: none;" width="775px" height="350px"
            src="behaviorbyLocation.aspx"></iframe>
        <iframe name="iName_iDemographicsYTD" id="IDemographicsYTD" style="border: none;" width="800px" height="400px"
            src="behaviorbyDemographics.aspx?ytd=1"></iframe>
        <iframe name="iName_iDemographicsMTH" id="IDemographicsMTH" style="border: none;" width="800px" height="400px"
            src="behaviorbyDemographics.aspx?ytd=0"></iframe>
    </div>
</form>

在每个iFrame的背后代码中,我想引用调用表单中的下拉框以获取选定的值。 我一直在尝试下面各种形式的代码,但是我的语法不正确。 我怎样才能做到这一点?

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;

namespace DMC.BM
{
    public partial class behaviorBySchool : System.Web.UI.Page
    {
        refData rd = new refData();

        protected void Page_Load(object sender, EventArgs e)
        {
            form1 frm = (form1)FindControl("bmBehaviorForm");
         }
    }
}

编辑在获得以下出色的答案和澄清后,我认为我要做的是用javascript替换iFrame来构建我的图。 我正在使用Highcharts,但最近发现了dotnet Highcharts-dotnet Highcharts是我在每个iFrame中构建的。 我想我会放弃这一点,只使用基于javascript的Highcharts构建图表,这将解决我的所有问题。

您尝试做的事是不可能的。 至少以您当前拥有的方式。 ASP.NET不知道iframe中的内容。 iframe是纯粹的客户端想法。

您是否真的要拥有iframe,还是只是想拥有一些可重用的代码/内容,您可以从后面的代码中访问这些代码/内容? 如果是后者(几乎可以肯定是您想要的),则应将.aspx页面放入ASP.Net UserControls。 完成之后,您就可以按照我认为的方式访问这些控件。

这些形式的实例不在服务器上同时存在。 即使它们做到了,它们之间也没有任何联系。

iframe表单需要的所有数据放在您分配给iframe.src属性的网址的查询字符串中。 然后,您将可以在iframe页面的C#代码中以Request["ytd"]访问这些数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM