我有以下gridView选择命令 -
SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = 1
运行时会将所需的结果带回gridview,但是我从前一页传递一个字符串值来填充textBox,并且在页面加载时希望gridview SelectCommand
由该字符串确定。 / p>
类似于 -
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = <%TextBox1.Text%>
但是,这并没有在页面加载时获取字符串值。
答案 0 :(得分:0)
上面的评论都是正确的,这种方法确实让你接触到SQL注入......但回答你的问题:
这可以通过多种方式完成,但您不再需要文本框,因为您需要使用Querystring传递所需的值。所以给它一个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#,请使用以下链接:Convert VB.NET to C#
答案 1 :(得分:0)
这种查询很容易SQL Injection,您可以使用参数代替。并使用从QueryString中获得的值。
SqlCommand comm = new SqlCommand();
comm.CommandText = "SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = @value";
comm.Parameters.AddWithValue("value", Request.QueryString["string"]);