首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于动态链接库的动态SelectCommand视图转换

基于动态链接库的动态SelectCommand视图转换
EN

Stack Overflow用户
提问于 2012-12-18 06:48:55
回答 1查看 836关注 0票数 1

这是我的下拉列表...

代码语言:javascript
复制
<asp:DropDownList
    ID="selectTimeFrame"
    runat="server"
    AutoPostBack="true"
    DataTextField="Increment"
    DataValueField="Increment"
    DataSourceID="SqlTimeFrame" 
</asp:DropDownList>

及其数据源:

代码语言:javascript
复制
  <asp:SqlDataSource 
    ID="SqlTimeFrame"
    runat="server"
    ConnectionString="<% connectionstring %>"
    SelectCommand="Select [IncrementID], [Increment] FROM [TimeFrame] ORDER BY [IncrementID]" >
</asp:SqlDataSource>

然后我有一个网格视图,它的数据源看起来像:

代码语言:javascript
复制
 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<% connectinstring %>"
    ProviderName="<% connectionstring %>"
    SelectCommand="SELECT * FROM @TimeFrame">

    <SelectParameters>
        <asp:ControlParameter ControlID="selectTimeFrame"
            Name="TimeFrame"
            PropertyName="SelectedValue"
            Type="String" />
    </SelectParameters>

很明显,我遇到问题的地方是“FROM @TimeFrame”没有做我想做的事情。我有不同的视图,其名称对应于不同的时间范围,我希望能够更改网格视图,以填充基于用户通过下拉菜单选择的选项的信息。任何洞察力都将不胜感激。谢谢!!:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 12:25:55

您可以使用dynamic SQL来实现您正在寻找的东西,尽管您需要对此进行非常严格的测试,以防止SQL注入攻击,因为我们永远不能信任从用户接收的输入。

我已经创建了一个简单的存储过程,它检查数据库中是否存在该表,如果存在,它将构造并执行动态SQL语句:

存储过程:

代码语言:javascript
复制
CREATE PROCEDURE dbo.GetData
@TableName NVARCHAR(200)
AS
BEGIN
IF OBJECT_ID(@TableName , N'U') IS NOT NULL
    BEGIN 
        EXEC('SELECT * FROM ' + @TableName);
    END
END

ASPX:

代码语言:javascript
复制
<asp:DropDownList ID="selectTimeFrame" runat="server" AutoPostBack="true" DataTextField="Increment"
    DataValueField="Increment" DataSourceID="SqlTimeFrame" />
<asp:SqlDataSource ID="SqlTimeFrame" runat="server" ConnectionString="<%$ ConnectionStrings:connectionstring %>"
    SelectCommand="Select [IncrementID], [Increment] FROM [TimeFrame] ORDER BY [IncrementID]">
</asp:SqlDataSource>
<asp:SqlDataSource ID="dynamicDS" runat="server" ConnectionString="<%$ ConnectionStrings:connectionstring %>"
    SelectCommand="GetData" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="selectTimeFrame" Name="TableName" PropertyName="SelectedValue"
            Type="String" />
    </SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="gvData" DataSourceID="dynamicDS" runat="server">
</asp:GridView>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13923554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档