我正在为我的公司创建一个需要处理表单处理和数据库操作的Web应用程序。该应用程序使用.NET Framework 3.5实现,使用C#和Visual Studio 2008作为IDE,Microsoft SQL Server 2005作为数据库。
这是我的问题:
我有很多表格
但我的老板只希望我为数据库创建单个页面 处理(将来更容易扩展)
我想出解决这个问题的唯一方法是只有一个.aspx文件(包含数据库的所有内容),并在每次表单需要处理数据库时将其作为弹出窗口调用。
这是我的另一个问题:
由于HTTP的无状态特性,我无法处理和传递 变量在两个不同的窗口之间。
我设法创建了某些Javascript函数并拥有了 变量在显示器上传输,但它只能传递一个变量 这是表中的主键。处理其他列 表是可能的,但结果我必须写一个非常 我的.aspx页面中的长内联脚本以及编译后的人员 可以轻松查看如何轻松访问我公司的数据库。因此,我 不赞成这个(除了处理1表格,我需要创建一个 已经有很长的代码了,想象一下,如果我有1000多个表格!)
所以你们有两种方式可以帮助我:
建议另一种方法,而不是为我的新窗口弹出 问题,甚至可能会建议如何实施。
如果您认为弹出是解决方案,您可以分享一些 片段,可以帮助我弄清楚之间传递的变量 两个不同的窗口。我可以使用一些建议,特别是一些 Javascript专家:)。
注意:解决方案必须在ASP.NET Framework 3.5中可用,并使用IE浏览器版本进行测试:8。
P.S:这是关于我的申请流程的简短说明
假设我在数据库中输入了有关产品的数据(它具有很少的属性ID,名称,价格等)
稍后我想编辑该产品的一个或几个属性,所以我必须启动一个名为“editor.aspx”的表单
我没有在表单中输入产品ID(这是主键)(并根据输入的产品ID编辑数据),而是冒错误地编辑正确的数据,我提供了一个小按钮。 form(我们将其命名为btSearch),它将启动一个新的弹出窗口,其中包含所有产品数据库的gridview(启用选择)
- 醇>
现在我只需要浏览gridview,选择一个特定的行,它将关闭弹出窗口,我希望看到该行的几个数据出现在我的原始页面上(在文本框/标签中)
我希望我上面的解释清除空气,谢谢。
答案 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。 :)
答案 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命令。
其余的只是遵循该教程并完全粘贴代码。