弹出窗口数据变量传递
本文关键字:变量 数据 窗口 | 更新日期: 2023-09-27 18:13:59
我正在为我的公司创建一个web应用程序,需要处理表单处理和数据库操作。该应用程序是使用。net Framework 3.5实现的,使用c#和Visual Studio 2008作为IDE, Microsoft SQL Server 2005作为数据库。
我的问题是:
-
我有很多表单
-
但是我的老板只希望我为数据库创建一个页面处理(将来更容易扩展)
我发现解决这个问题的唯一方法是只有1 .aspx文件(包含关于数据库的所有内容),并在每次表单需要处理数据库时将其作为弹出窗口调用。
这是我的另一个问题:由于HTTP的无状态特性,我无法处理和传递变量在两个不同的窗口之间。
我设法创建某些Javascript函数,并有变量,但是它只能传递一个变量这是表中的主键。中处理其他列表格是可能的,但结果是我必须写一个非常长内联脚本在我的。aspx页面和它编译后的人可以轻松查看如何轻松访问我的公司数据库。因此,我我不喜欢这个(除了处理1形式,我需要创建一个代码已经很长了,想象一下如果我有超过1000个表单!)
所以你们有两种方法可以帮助我:
建议另一种方法,而不是弹出一个新窗口问题,甚至可以建议如何实现。
如果你认为弹出是解决方案,你介意分享一些片段,可以帮助我找出变量之间传递两个不同的窗口。我可以使用一些建议,特别是来自一些Javascript专家:).
注意:解决方案必须在ASP中可行。. NET Framework 3.5,并使用IE浏览器版本测试:8.
我希望我以上的解释能消除误会,谢谢。p。S:这是一个关于我的申请流程的简短解释
假设我输入了关于产品的数据(它有几个属性id,名称,价格等)到数据库
稍后我想编辑该产品的一个或几个属性,所以我必须启动一个名为"editor.aspx"
的表单没有在表单中输入产品id(这是主键)(并根据输入的产品id编辑数据)并冒着错误计算编辑正确数据的风险,我在表单中提供了一个小按钮(让我们将其命名为btSearch),这将启动一个新的弹出窗口,其中包含所有产品的数据库的网格视图(启用了选择)
现在我只需要浏览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,所以我建议考虑使用以下方式:
jQueryAjaxControlToolkit 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命令。
剩下的就按照教程复制粘贴代码。