1

我需要动态填写“SelectParameters”,但我在 Google 上找到的都是使用固定参数。

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="XX"
                            OnSelecting="SqlDataSource2_Selecting" SelectCommand="">
                            <SelectParameters>
                            </SelectParameters>
                        </asp:SqlDataSource>

有什么解决办法吗?

我也尝试使用“OnSelecting”事件,但我无法为不存在的参数赋值。

 protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        string[] queryFields = new string[] { ... }; // some dynamic field depends on different table

        foreach (string s in queryFields)
        {
            e.Command.Parameters["@" + s].Value = "filter";
        }

    }
4

2 回答 2

2

您可以在后面的代码中设置如下变量:

SqlDataSource1.SelectParameters.Add("parameterName", "parameterValue");

但请注意,您需要在添加参数之前清除参数。因为否则你最终会得到重复的参数。

于 2012-04-16T10:33:34.387 回答
-1

如果您可以在初始化控件时设置连接字符串,您可以在控件的 init 事件中这样做,如下所示:

protected void SqlDataSource1_Init(object sender, EventArgs e)
{
     SqlDataSource1.ConnectionString = <whatever code you want here>;
     SqlDataSource1.ProviderName = <whatever code you want here>;
}

这仍然是动态的,因为您在运行时而不是设计时确定连接属性。这帮助我避免了使用 web.xml 转换并基于指定 QA/PROD 环境的环境变量在 QA 和 PROD 连接字符串之间切换。

于 2014-09-07T12:45:49.973 回答