我有一个由数据表填充的datagridview,我希望能够在用户点击该单元格时将单元格的值传递给下一页。然后将该单元格的值传递给sql存储过程。有人可以提供如何做到这一点的方法吗?
答案 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注入将不会成为问题。