望着documentation on MSDN,你必須改變你如何已經設置了SqlDataSource
。
嘗試這種情況:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [project_details]"
FilterExpression="title='{0}'"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
EnableCaching="True">
<FilterParameters>
<asp:ControlParameter ControlID="TextBox1" Name="status" PropertyName="Text" ConvertEmptyStringToNull="false" Type="String" />
</FilterParameters>
</asp:SqlDataSource>
我已刪除從查詢Where
子句,因爲這會通過過濾器表達式來施加。此外,我已將過濾器表達式從title='{4}'
更改爲title='{0}'
。該文檔指出該編號是FilterParameters集合中項目的佔位符。
更新 我也改變了SelectParameters到2
我創建了一個工作示例來完成這個答案的FilterParameters
更新。這將使用文本框中的文本過濾標題列。如果這個文本框是空的,它將返回表中的所有行(一個可怕的想法,但這個例子可以)。它正在查詢我爲其設置連接字符串AWORK的AdventureWorks數據庫。
<asp:SqlDataSource ID="SqlDataSource1"
ConnectionString="<%$ ConnectionStrings:AWorks %>"
SelectCommand="SELECT ContactId, Title, FirstName, LastName FROM Person.Contact"
FilterExpression="Title='{0}'"
runat="server">
<FilterParameters>
<asp:ControlParameter Name="Title" ControlID="txtTitle" PropertyName="Text" />
</FilterParameters>
</asp:SqlDataSource>
<asp:TextBox runat="server" Id="txtTitle"></asp:TextBox>
<asp:Button runat="server" UseSubmitBehavior="true" Text="Submit" />
<asp:GridView
DataSourceID="SqlDataSource1"
AutoGenerateColumns="false"
runat="server">
<Columns>
<asp:BoundField Visible="false" DataField="ContactId"></asp:BoundField>
<asp:BoundField Visible="true" DataField="Title"></asp:BoundField>
<asp:BoundField Visible="true" DataField="FirstName"></asp:BoundField>
<asp:BoundField Visible="true" DataField="LastName"></asp:BoundField>
</Columns>
</asp:GridView>
嘿謝謝,但在這裏我忘了提及我的過濾器參數。 –
你的代碼不具有過濾器參數 –
好點。我已經更新了答案,並將SelectParameters更改爲FilterParameters集合 –