2017-01-30 46 views
1
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString9 %>" ProviderName="<%$ ConnectionStrings:ConnectionString9.ProviderName %>" SelectCommand="SELECT * FROM [Orders] WHERE ([oStatus] = ?)"> 
    <SelectParameters> 
     <asp:Parameter DefaultValue="CheckedOut" Name="oStatus" Type="String" /> 
    </SelectParameters> 
    </asp:SqlDataSource> 

以上是SqlDataSource的代码。我想要做的是添加一个按钮,它将帮助我在SelectCommand中添加一个额外的WHERE条件,并为添加的条件添加SelectParameters。使用按钮更改SqlDataSource SelectCommand和SelectParameter

按钮

<asp:Button runat="server" text="filter record" ID="filterbutton" OnClick="filterbutton_Click"/> 

我想要的SelectCommand,寻找当按钮被点击

SelectCommand="SELECT * FROM [Orders] WHERE ([oStatus] = ?) AND ([oDelivery_Status] = ?)"> 

问题是有可能增加超过1个SelectParameters像什么?是否有可能通过按钮OnClick方法来实现?如果不是,还有其他解决方案/方法吗?先谢谢你。

回答

0

你需要设置你在你的SelectCommand这样想两个参数:

protected void filterbutton_Click(object sender, EventArgs e) 
{ 
     string stroStatus = ""; 
     string stroDelivery_Status = ""; 
     SqlDataSource1.SelectParameters["oStatus"].DefaultValue = stroStatus; 
     Parameter pm = SqlDataSource1.SelectParameters["oDelivery_Status"]; 


     if (!SqlDataSource1.SelectParameters.Contains(pm)) 
     { 
      SqlDataSource1.SelectParameters.Add("oDelivery_Status", 
      stroDelivery_Status); 
     } 
     SqlDataSource1.SelectCommand = "SELECT * FROM [Orders] WHERE ([oStatus] = @oStatus) AND ([oDelivery_Status] = @oDelivery_Status)" 
} 
+0

谢谢。有用!然而,当我尝试串stroDelivery_Status到一个DropDownList文字,按钮只有第一次点击后的作品,以后不会了。这里是字符串的代码 'string stroDelivery_Status = DropDownList2.Text;' 我该如何使它在第一次使用后才起作用? – user7381027

+0

@ user7381027你把一个调试器。第二次按钮不会被触发? –

+0

你认为问题出在这行代码? 'SqlDataSource1.SelectParameters.Add(“oDelivery_Status”,stroDelivery_Status);'?由于第二次点击后添加的前一个参数(从第一次点击)不会被删除,因此我将有3个参数 – user7381027