我有一个datagridview由一个数据表填充,我希望能够在用户单击该单元格时将单元格的值传递到下一页。该单元格的值然后传递给一个sql存储过程。有人可以提供如何做到这一点的方法吗?将参数从超链接字段框发送到下一页
回答
您可以在点击时填入Session变量或将QueryString参数添加到超链接 - 但请记住,这些中的任何一个都可能被最终用户(QueryString参数比会话变量更容易)更改,所以你必须担心执行存储过程的页面上的SQL注入。
编辑 - 假设你为列提供的代码,你只需要值添加到您的HyperLinkField字段的NavigateUrl,喜欢的东西:
<asp:HyperLinkField DataTextField="OnCallStart" HeaderText='OncallStart" NavigateUrl="\website1\Default2.aspx?value=<%# HttpUtility.UrlEncode(Eval("DataSourceField")) %>' SortExpression="OnCallStart" />
和你的新页面上处理值(Default2.aspx)使用Response.QueryString("value")
。
三种最流行的,我所看到的是:
- 查询字符串
- 发帖值到下一个页面
- 会话状态
你可以阅读所有三个this article.正如@Ian指出的那样,人们很容易修改查询字符串参数,所以要谨慎使用它们。如果你正在使用参数化查询(你应该是这样),那么SQL注入将不会是一个问题。
Abe,我读过那个页面,不明白页面之间传递的值是如何传递的。我假设会话状态是要走的路。 – 2011-04-21 14:42:12
在这种情况下我会使用查询字符串,这样的:
<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
onof这是问题字段的代码:
你必须把它变成一个TemplateField,像这样:
- 1. 发送到另一个链接的链接参数asp net c#
- 2. 如何通过超链接将对象从JSP发送到Servlet?
- 3. 从超链接发送数据到脚本
- 4. 将参数从片段传递到电梯框架中的下一个页面
- 5. 将数据从一个片段发送到另一个片段
- 6. Facebook发送对话框:添加查询字符串参数到链接
- 7. 如何找到超链接字段
- 8. 将以短信发送的超链接字符串
- 9. 将数据从IntentService发送到片段
- 10. 报告超链接到自定义页面上的字段
- 11. 将特定字段链接到另一个html页面
- 12. 发送参数从一个Facelets的网页到另一个
- 13. Jquery Slideshowify超链接到另一页
- 14. 如何获得我的上一页/下一页链接,以便将我发送到页面顶部?
- 15. .Net复制ID数据字段到超链接导航URL参数
- 16. 超链接 - 转到下一个空行?
- 17. 将数组传送到下一页
- 18. 将查询字符串发送到下一页
- 19. 如何将参数从jsp页面发送到jasper文件
- 20. ASP.net数据绑定从Access数据库字段的超链接
- 21. LF将数据发送到套接字
- 22. 将数据发送到java.js页然后将其发送到另一个页面
- 23. 使用jQuery将参数从一个链接传递到另一个链接
- 24. 将数据从jquery对话框发送到父页面
- 25. 将网址添加到gridview中的超链接字段
- 26. 将参数发送给ViewPager片段
- 27. $ _SESSION变量没有将数据发送到下一个页面
- 28. 为什么不将此表单数据发送到下一页?
- 29. 将上下文从一个页面发送到Aurelia中的另一个页面
- 30. 标记链接与参数从片段
伊恩,我有这样的代码现在的和我的链接未显示不再为OncallStart字段和default2.aspx页面上的数据表格未被填充。有什么建议么? –
2011-04-26 15:55:01
是否有任何异常被抛出?如果将DataNavigateUrlFormatString更改为“{0}”或“\ website1 \ Default2.aspx”,会发生什么情况 - 您是否还有问题?另外,考虑使用代字号将直接链接映射到您想要的页面,如'〜/ website1/Default2.aspx'。 – 2011-04-26 17:30:44
伊恩,没有异常被抛出,当我试图保存我的连接字符串时,我发现它是“自定义”,即使当我通过向导时,我正确设置连接字符串。我已经从Visual Studio中将web.config文件复制到根目录,但似乎无法解决问题。当我回头看看我的数据表时,同样的“自定义”连接字符串就在那里。任何想法为什么? – 2011-04-26 17:52:06