弹出窗口数据变量传递

时间:2011-11-09 06:23:03

标签: c# javascript asp.net database popup

我正在为我的公司创建一个需要处理表单处理和数据库操作的Web应用程序。该应用程序使用.NET Framework 3.5实现,使用C#和Visual Studio 2008作为IDE,Microsoft SQL Server 2005作为数据库。

这是我的问题:

  1. 我有很多表格

  2. 但我的老板只希望我为数据库创建单个页面 处理(将来更容易扩展)

  3. 我想出解决这个问题的唯一方法是只有一个.aspx文件(包含数据库的所有内容),并在每次表单需要处理数据库时将其作为弹出窗口调用。

    这是我的另一个问题:

    1. 由于HTTP的无状态特性,我无法处理和传递 变量在两个不同的窗口之间。

    2. 我设法创建了某些Javascript函数并拥有了 变量在显示器上传输,但它只能传递一个变量 这是表中的主键。处理其他列 表是可能的,但结果我必须写一个非常 我的.aspx页面中的长内联脚本以及编译后的人员 可以轻松查看如何轻松访问我公司的数据库。因此,我 不赞成这个(除了处理1表格,我需要创建一个 已经有很长的代码了,想象一下,如果我有1000多个表格!)

    3. 所以你们有两种方式可以帮助我:

      1. 建议另一种方法,而不是为我的新窗口弹出 问题,甚至可能会建议如何实施。

      2. 如果您认为弹出是解决方案,您可以分享一些 片段,可以帮助我弄清楚之间传递的变量 两个不同的窗口。我可以使用一些建议,特别是一些 Javascript专家:)。

      3. 注意:解决方案必须在ASP.NET Framework 3.5中可用,并使用IE浏览器版本进行测试:8。

          

        P.S:这是关于我的申请流程的简短说明

             
            
        1. 假设我在数据库中输入了有关产品的数据(它具有很少的属性ID,名称,价格等)

        2.   
        3. 稍后我想编辑该产品的一个或几个属性,所以我必须启动一个名为“editor.aspx”的表单

        4.   
        5. 我没有在表单中输入产品ID(这是主键)(并根据输入的产品ID编辑数据),而是冒错误地编辑正确的数据,我提供了一个小按钮。 form(我们将其命名为btSearch),它将启动一个新的弹出窗口,其中包含所有产品数据库的gridview(启用选择)

        6.   
        7. 现在我只需要浏览gridview,选择一个特定的行,它将关闭弹出窗口,我希望看到该行的几个数据出现在我的原始页面上(在文本框/标签中)

        8.   

        我希望我上面的解释清除空气,谢谢。

4 个答案:

答案 0 :(得分:1)

  

“1。由于HTTP的无状态特性,我无法处理和通过   两个不同窗口之间的变量。“

这个评论开始时你错了,尝试MSDN和ASP.Net "How to pass values between ASP.Net Web pages"。在Windows之间传递只需要更多的思考,可能需要一些Javascript来刷新父窗口或在shild窗口等上进行回发。

答案 1 :(得分:1)

我最近写了类似的东西:数据库处理程序as aspx file。但我通过使用ajax / jquery来调用它。

当我的aspx文件完成后,我会在响应流,一些代码,一个json字符串中写一些东西。

示例:

$.post("yourdatabasehandler.aspx", { name: "John", lastname: "Smith" }, function(data) {
    alert("Response from page: " + data);
  });

在该示例中,name和lastname是发布到您网站的值。你可以这样访问它们:

string name = Request.Params["name"]
// Do your database , validation and whatever logic here
Response.Write("Cool dude");

上述javascript将在您的数据库处理程序完成后提醒“Cool dude”。在您的JavaScript中,您可以根据需要对响应做出反应 - 例如重新加载页面。

希望有帮助吗?此致

答案 2 :(得分:1)

如果您正在使用弹出窗口,则可以始终使用QueryStrings将值传递给弹出窗口。

window.open("popup_page.aspx?id=" + id + "&name=" + name)

在popup_page.aspx中访问它

string sID = Request.QueryString("id");
string sName = Request.QueryString("name");

更新:如果您使用的是IE,这可能会对您有所帮助。

function ShowPopup(strMessage) 
{   
   var returnValue= window.showModalDialog("popup_page.aspx");

}

popup_page.aspx

<asp:Button ID="btnReturnValue" runat="server" Text="Proceed" OnClientClick="window.returnValue='some message';window.close();" />

注意:请注意,这仅适用于 IE ,因此我建议您考虑使用以下内容:

jQuery

AjaxControlToolkit ModalPopup

我个人建议使用jQuery。 :)

答案 3 :(得分:0)

感谢所有答案,评论。费率和反馈。刚才我发现了一个非常有用的链接here。基本上答案是基于该特定代码。我只需要改变某些部分。

<script language="javascript">

function GetRowValue(val)
{
    window.opener.document.getElementById("ctl00_ContentPlaceHolder1_TextBox2").value = val;
   // make sure you change the TextBoxId as respective to your creation 
    window.close();
}

</script>

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<!-- Reserve the code below, as after you configure data source you -->
<!-- will alter this code drastically therefore-->
<!--you have to make sure to paste this code --> 
<!-- again inside this Gridview element once you configure your data source -->
    <asp:TemplateField>
        <AlternatingItemTemplate>
            <asp:Button ID="btnSelect" runat="server" Text="Select" />
        </AlternatingItemTemplate>
        <ItemTemplate>
            <asp:Button ID="btnSelect" runat="server" Text="Select" />
        </ItemTemplate>
    </asp:TemplateField>
<!-- This part must be reserved -->
</Columns>

还记得在数据源中指定连接字符串和sql命令。

其余的只是遵循该教程并完全粘贴代码。

相关问题