2012-09-04 47 views
1

我试图通过我的网站生成报告。通过Querystring将用户输入值传递给代码

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

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

DropDownList的值通过设置在SelectedIndexChanged上的Session变量传递给Report.aspx。 Report.aspx读取此内容,并应读取2个文本框的文本值。

问题
我无法弄清楚如何通过发送文本框的值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> 

我不知道这会的工作,虽然,作为评估和演示通常需要家长控制,以进行数据绑定 - 据我所知反正。

任何建议,将不胜感激

回答

0

当我问这个问题时,我记得Dropdownlist和textboxes用于绑定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 
0

使用jQuery或Javascript你可以只调用客户端函数从表单元素获取值,构造URL并打开一个新的窗口?

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

如您在报告页面需要使用这些。