弹出窗口数据变量传递

本文关键字:变量 数据 窗口 | 更新日期: 2023-09-27 18:13:59

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

我的问题是:

  1. 我有很多表单

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

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

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

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

所以你们有两种方法可以帮助我:

  1. 建议另一种方法,而不是弹出一个新窗口问题,甚至可以建议如何实现。

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

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

p。S:这是一个关于我的申请流程的简短解释

  1. 假设我输入了关于产品的数据(它有几个属性id,名称,价格等)到数据库

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

    的表单
  3. 没有在表单中输入产品id(这是主键)(并根据输入的产品id编辑数据)并冒着错误计算编辑正确数据的风险,我在表单中提供了一个小按钮(让我们将其命名为btSearch),这将启动一个新的弹出窗口,其中包含所有产品的数据库的网格视图(启用了选择)

  4. 现在我只需要浏览gridview,选择一个特定的行,它会关闭弹出窗口,我希望看到一些数据从那一行出现在我的原始页面(在文本框/标签)

我希望我以上的解释能消除误会,谢谢。

弹出窗口数据变量传递

我最近写了这样的东西:一个数据库处理程序作为aspx文件。但我调用它使用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会在你的databasehandler完成后提醒"Cool dude"。在你的javascript中,你可以对响应做出任何你想要的反应——例如重新加载一个页面。

希望有帮助?Regards

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

你一开始就错了,尝试MSDN和ASP。如何在ASP. Net之间传递值。网页"。在Windows之间传递只需要更多的思考,可能需要一点Javascript来刷新父窗口或在子窗口上进行回发等

如果你使用的是弹出式窗口,你可以使用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。:)

感谢大家的回答和评论。比率和反馈。刚才我在这里找到了一个非常有用的链接。基本上答案是基于那个特定的代码。我只是需要修改一些部分。

<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命令。

剩下的就按照教程复制粘贴代码。