1

我正在尝试通过我的网站生成报告。

Default.aspx 有一个下拉列表和 2 个文本框。报告(在不同的页面上生成)必须在用于从 SQL Server 收集数据的 sql 查询中使用这 3 个控件中的所有值。

概念
用户可以保留所有 3 个字段的默认值,或更改其中任何一个。在确定用户希望查看报告的值后,他们可以单击 aHyperLink control在新选项卡中打开报告页面。

DropDownList 中的值通过设置在 上的 Session 变量传递给 Report.aspx SelectedIndexChanged。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 通常需要父控件进行数据绑定——据我所知。

任何建议将不胜感激

4

3 回答 3

0

使用 jQuery 或 Javascript 您可以只调用客户端函数来从表单元素中获取值、构造 url 并打开一个新窗口吗?

于 2012-09-04T12:37:22.463 回答
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
于 2012-09-04T13:54:21.477 回答
0

您可以使用链接按钮来进行跨页面发布,而不是使用超链接。

<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");

在报告页面中根据需要使用这些。

于 2012-09-04T14:21:09.590 回答