0

好的 - 我认为这应该很简单/基本,但我浏览了许多有类似问题的帖子,但仍然不清楚如何做到这一点。

基本设置如下 - 我在页面上有一个名为“产品”的文本框,它会在文本更改时回发。

在页面加载中,我执行以下操作:

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>
4

1 回答 1

0

尝试这个:SelectCommand="SELECT id, pID, pName FROM prods WHERE pID LIKE '%' + @productFilter + '%'"

于 2013-01-22T21:42:30.400 回答