将参数从超链接字段框发送到下一页

时间:2011-04-20 20:14:54

标签: asp.net vb.net

我有一个由数据表填充的datagridview,我希望能够在用户点击该单元格时将单元格的值传递给下一页。然后将该单元格的值传递给sql存储过程。有人可以提供如何做到这一点的方法吗?

3 个答案:

答案 0 :(得分:1)

您可以在点击时填充Session变量或向超链接添加QueryString参数 - 但是,请记住,最终用户可以更改其中任何一个(QueryString参数比会话更容易)变量),所以你必须担心执行存储过程的页面上的SQL注入。

编辑 - 假设您为该列提供的代码,您只需将该值添加到HyperLinkField的NavigateUrl中,例如:

<asp:HyperLinkField DataTextField="OnCallStart" HeaderText='OncallStart" NavigateUrl="\website1\Default2.aspx?value=<%# HttpUtility.UrlEncode(Eval("DataSourceField")) %>' SortExpression="OnCallStart" />

使用Response.QueryString("value")处理新页面上的值(Default2.aspx)。

答案 1 :(得分:1)

在这种情况下,我会使用QueryString,类似于:

<asp:GridView... >
<Columns>
<asp:TemplateField>
<ItemTemplate>
   <a href='nextPage.aspx?value=<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem,  "ColumnName")) %>' ><%# Eval("TextField") %></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>

</asp:GridView>

在下一页:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) ...

   passedValue = Request.QueryString("value").ToString()

   DoSomethingWith(value)

End Sub

答案 2 :(得分:0)

我见过的最受欢迎的三个是:

  • 查询字符串
  • 将值发布到下一页
  • 会话状态

你可以阅读this article.中的所有三个。因为@Ian指出人们很容易修改查询字符串参数,所以要小心使用它们。如果您正在使用参数化查询(就像您应该那样),那么SQL注入将不会成为问题。