还原ASP SQL数据源Select语句

时间:2019-02-07 06:48:55

标签: c# asp.net

如果已在.aspx页上指定了Select语句,然后根据某些事件驱动的逻辑在后面的代码中对其进行了更改,则可以使用一种方法将select语句还原为最初在.aspx页上的内容。 aspx页面?

ASP代码:

<asp:SqlDataSource ID="ds_Users" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
    SelectCommand="SELECT * FROM [Users]"  >
</asp:SqlDataSource>

在后面的代码中:

ds_Users.SelectStatement += " WHERE [UserType] LIKE '" + LocalVariable + "'";

让我们假设上述事件绑定到一个以UserTypes作为项目的过滤器组合框中。

如果该列表中包含“查看全部”选项,我如何将SelectStatement还原为原始查询,而又不将Select语句(SELECT * FROM [Users])作为另一个字符串存储在后面的代码中。那有可能吗?

1 个答案:

答案 0 :(得分:0)

您必须始终在每次加载页面或回发时修复SQL Select命令。您确实要绑定一个,然后仅在单击更改SQL命令的按钮时再绑定一次。

这里是一个示例,请注意gvMyLista是使用数据的GridView。

protected void Page_Load(object sender, EventArgs e)
{
    FixTheSelectCommand();
}

void FixTheSelectCommand()
{
    // this is an example - make your test here to know if there is a valid variable
    if(LocalVariable != null)
        ds_Users.SelectCommand = "SELECT * FROM [Users] WHERE [UserType] LIKE '" + LocalVariable + "'";
    else
        ds_Users.SelectCommand = "SELECT * FROM [Users]";

    if (!IsPostBack)
        gvMyLista.DataBind();
}

// when a search button clicked that change the search text
protected void btnSearchFor_Click(object sender, System.EventArgs e)
{
    gvMyLista.DataBind();
}