在SQLDataSource中使用字段名作为选择参数

时间:2012-05-31 01:49:38

标签: asp.net .net sqldatasource

是否可以在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>

3 个答案:

答案 0 :(得分:1)

这是我的黑客(解决方法)大部分时间

protected void page_load(...)
{
   SqlDataSource1.SelectParameters["FieldKey"] = field;
   SqlDataSource1.SelectParameters["FieldName"] = name;
}

或创建两个隐藏字段,将值分配给这些字段,然后使用

<asp:ControlParameter />

那是另一个黑客

答案 1 :(得分:1)

选项1

如果FieldKeyFieldName从代码中获取,我认为您可以轻松设置如下命令。

SqlDataSource1.SelectCommand = string.Format("select * from sometable where {0} = {1}",fieldKey ,fieldValue)

请验证SQL注入攻击的输入字段。

选项2

创建存储过程以接受两个参数键和值,您需要从这些参数构建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>

假设值存储在文本框中