将变量传递给sqldatasource选择命令客户端

时间:2014-08-09 06:54:07

标签: asp.net sqldatasource

我有一个网格和一个下拉列表,用户可以从中选择要填充网格的查询。 现在它工作正常:

protected void Button1_Click(object sender, EventArgs e)
    {
        string selected = DropDownList1.SelectedItem.Value;
        if (selected == "0")
        {
            Label1.Text = "You shall select a query!";
        }
        else
        {
            int x = Int32.Parse(selected);
            string query = "";
            switch (x)
            {
                case 1:     //Top 100 TB 321
                    query = @"...something...";
                    SqlDataSource1.SelectCommand = query;
                    break;

                case 2:
                    query = @"....something else....";
                    SqlDataSource1.SelectCommand = query;
                    break;

                case 3:     
               .......
            }
        }

在标记中,我只使用带有连接字符串的sqldatsource:

 <asp:SqlDataSource ID="SqlDataSource1" runat="server"
         ConnectionString="<%$ ConnectionStrings:BOMConnectionString %>" 
         ></asp:SqlDataSource>

使用上面的代码,我无法导出网格的内容,因为它生成错误“对象引用未设置为对象的实例”。为了避免这个问题,我应该将查询作为变量传递给标记中的sqldatasource,而不是从后面的代码中定义select命令。 如何将变量“query”传递给标记中的sqldatasource SelectCommand?

1 个答案:

答案 0 :(得分:0)

如果“导出”功能也是来自Web应用程序的回调,您应该能够在回调中看到DropDownList1的状态。用它来设置上面代码中的SelectCommand。 (我建议将重复的代码移动到它自己的帮助程序函数中,这样如果你从多个地方调用它,如果你以后编辑这些功能,则不必全部更改它们。)

或者,但是SqlDataSource在服务器上的会话存储中,而不是假装它是网页的一部分。然后,当您设置其SelectCommand时,将在回调中记住该值。

相关问题