好的 - 我认为这应该很简单/基本,但我浏览了许多有类似问题的帖子,但仍然不清楚如何做到这一点。
基本设置如下 - 我在页面上有一个名为“产品”的文本框,它会在文本更改时回发。
在页面加载中,我执行以下操作:
protected void Page_Load(object sender, EventArgs e)
{
prods.SelectCommand = "SELECT id, pID, pName FROM prods WHERE (pID LIKE '%" + product.Text + "%')";
prodsTable.DataBind();
}
以上不使用新的 SelectCommand 值更新表。从其他一些帖子 - 我认为这可能与页面加载事件序列有关,并且可能不会发生表绑定?
顺便说一句,我也尝试使用参数(下面的代码)来做到这一点 - 这也不起作用。也许有一个简单的解决方法(与以编程方式更改上述内容相比?)
在此先感谢 - 我想让它以任何一种方式工作(以编程方式或参数方式)。
完整代码如下:
<asp:TextBox ID="product" runat="server" AutoPostBack="True"></asp:TextBox>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="prods" AllowPaging="True"
AllowSorting="True" AutoGenerateEditButton="True">
<Columns>
<asp:BoundField DataField="pID" HeaderText="Product ID" ReadOnly="True"
SortExpression="pID" />
<asp:BoundField DataField="pName" HeaderText="Product Name"
SortExpression="pName" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ProviderName="MySql.Data.MySqlClient" ID="prods" runat="server"
CancelSelectOnNullParameter="false" ConnectionString="<%$ mystring %>"
SelectCommand="SELECT id, pID, pName FROM prods WHERE (pID LIKE '%@productFilter%')">
<SelectParameters>
<asp:ControlParameter ControlID="product" DefaultValue=""
Name="productFilter" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>