我正在尝试通过我的网站生成报告。
Default.aspx有一个下拉列表和2个文本框。报告(在不同页面上生成)必须使用用于从SQL Server收集数据的sql查询中这3个控件的所有值。
概念
用户可以将所有3个字段保留其默认值,或更改其中任何一个。在确定用户想要查看报告的值后,他们可以点击HyperLink control
在新标签页中打开报告页面。
DropDownList中的值通过SelectedIndexChanged
上设置的Session变量传递给Report.aspx。 Report.aspx读取此内容并应读取2个文本框的Text值。
问题
我无法弄清楚如何将TextBoxes的值发送到Report.aspx。我想到了以下几点:
<asp:HyperLink runat="server" id="lnkReport"
NavigateUrl="Report.aspx?fromdate=<%# Eval('txtFromDate.Text') %>&todate=<%# Eval('txtToDate.Text') %>"
target="_blank" Text="Generate Report"></asp:HyperLink>
我不确定这会起作用,因为Eval通常需要父控件进行数据绑定 - 据我所知,无论如何。
任何建议都将不胜感激
答案 0 :(得分:0)
使用jQuery或Javascript你可以调用一个客户端函数来从表单元素中获取值,构造url并打开一个新窗口吗?
答案 1 :(得分:0)
在我提出这个问题后,我记得Dropdownlist和文本框用于绑定Default.aspx上的GridView,我在这里使用了这个优势。
我知道,在我点击生成报告之前,GridView绝对有绑定,所以我在那里设置会话变量来存储报告所需的信息。
Dim db As New Database
Dim sql As String = "select * from users where userid = @id and dateregistered between @fromdate and @todate"
Dim args As New List(Of SqlParameter)
args.Add(New SqlParameter("@id", ddlUsers.SelectedItem.Value))
args.Add(New SqlParameter("@fromdate", txtFromDate.Text))
args.Add(New SqlParameter("@todate", txtToDate.Text))
gvItems.DataSource = db.GetDataReader(sql, args.ToArray())
dvItems.DataBind()
Session("userid") = ddlUsers.SelectedItem.Value
Session("fromdate") = txtFromDate.Text
Session("todate") = txtToDate.Text
答案 2 :(得分:0)
您可以使用链接按钮进行跨页面发布,而不是使用HyperLink。
<asp:LinkButton runat="server" id="lnkReport"
NavigateUrl="~/Report.aspx"
target="_blank" Text="Generate Report"></asp:LinkButton>
然后在 Report.aspx.cs :
从Page.PreviousPage获取值,如下所示:
DropDownList userid = (DropDownList)Page.PreviousPage.FindControl("ddlUsers");
TextBox fromdate = (TextBox)Page.PreviousPage.FindControl("fromdate");
TextBox todate = (TextBox)Page.PreviousPage.FindControl("todate");
在报告页面中根据需要使用这些。