为SqlDataSource动态设置参数字段

时间:2012-04-16 10:23:45

标签: asp.net

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

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

有没有解决方案?

我也尝试使用&#34; OnSelecting&#34;事件,但我无法为不存在的参数赋值。

 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";
        }

    }

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:-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连接字符串之间切换。