1

我有以下 gridView 选择命令-

SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = 1

运行时它将所需的结果带回gridview,但是我从上一页传递一个字符串值来填充一个textBox,并且在页面加载时希望gridviewSelectCommand由该字符串确定。

所以像 -

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = <%TextBox1.Text%>

但是,这并没有在页面加载时获取字符串值。

4

2 回答 2

0

上面的评论是真实的,这种方法确实让你接触到 SQL 注入......但要回答你的问题:

这可以通过多种方式完成,尽管您不再需要文本框,因为您需要的值是使用查询字符串传入的。所以给这个bash(VB.Net):

Protected Sub Page_Load(sender as Object, e as System.EventArgs) Handles Me.Load

  Dim myString As String = Request.Querystring("NameOfQuerystring")

  ' Call Sub and pass in value
  GenerateOutput(myString)

End Sub


Sub GenerateOutput(ByVal DBValue As String)

  'Perform Database call using the DBValue

  SelectCommand = "SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = " & DBValue

End Sub

如果您想将其转换为 C#,请使用此链接:将 VB.NET 转换为 C#

于 2013-01-29T12:28:33.693 回答
0

这种查询容易出现SQL 注入,可以使用参数代替。并使用您从 QueryString 中获得的值。

SqlCommand comm = new SqlCommand();
comm.CommandText = "SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = @value";
comm.Parameters.AddWithValue("value", Request.QueryString["string"]);    
于 2013-01-29T12:33:33.087 回答