是否可以在SQLDataSource中使用字段名作为select参数?
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DbConnection %>"
ProviderName="<%$ ConnectionStrings:DbConnection.ProviderName %>"
SelectCommand="select * from sometable where @FieldKey = @FieldValue">
<SelectParameters>
<asp:Parameter Name="FieldKey" Type="String" />
<asp:Parameter Name="FieldValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
答案 0 :(得分:1)
这是我的黑客(解决方法)大部分时间
protected void page_load(...)
{
SqlDataSource1.SelectParameters["FieldKey"] = field;
SqlDataSource1.SelectParameters["FieldName"] = name;
}
或创建两个隐藏字段,将值分配给这些字段,然后使用
<asp:ControlParameter />
那是另一个黑客
答案 1 :(得分:1)
如果FieldKey
和FieldName
从代码中获取,我认为您可以轻松设置如下命令。
SqlDataSource1.SelectCommand = string.Format("select * from sometable where {0} = {1}",fieldKey ,fieldValue)
请验证SQL注入攻击的输入字段。
创建存储过程以接受两个参数键和值,您需要从这些参数构建SQL查询并在存储过程内执行。
然后你可以从datasource调用它。
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DbConnection %>"
ProviderName="<%$ ConnectionStrings:DbConnection.ProviderName %>"
SelectCommand="StoredProcedureName"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="FieldKey" Type="String" />
<asp:Parameter Name="FieldValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
答案 2 :(得分:0)
如果您的意思是使用控件中的值[如文本框,下拉列表],那么这里就是
<SelectParameters>
<asp:ControlParameter ControlID="FieldKey" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="FieldName" PropertyName="Text"
Type="String" />
</SelectParameters>
假设值存储在文本框中