我有一个网格和一个下拉列表,用户可以从中选择要填充网格的查询。 现在它工作正常:
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?
答案 0 :(得分:0)
如果“导出”功能也是来自Web应用程序的回调,您应该能够在回调中看到DropDownList1
的状态。用它来设置上面代码中的SelectCommand。 (我建议将重复的代码移动到它自己的帮助程序函数中,这样如果你从多个地方调用它,如果你以后编辑这些功能,则不必全部更改它们。)
或者,但是SqlDataSource在服务器上的会话存储中,而不是假装它是网页的一部分。然后,当您设置其SelectCommand时,将在回调中记住该值。