Put all the parameters in a HiddenField, one of the HDFs must be the flag that is used to decide whether the select method should return query elements. See the answer .
Code example:
FilterGridView.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FilterGridView.aspx.cs" Inherits="Q11876988WebApp.FilterGridView" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%-- Fields for user inputs --%> Id: <asp:TextBox ID="TxtId" runat="server"></asp:TextBox> Name: <asp:TextBox ID="TxtName" runat="server"></asp:TextBox> Phone: <asp:TextBox ID="TxtPhone" runat="server"></asp:TextBox> <%-- Button to perform query --%> <asp:Button ID="BtnQuery" runat="server" OnClick="BtnQuery_Click" Text="Query" /> <%-- Hidden Fields used as parameters --%> <asp:HiddenField ID="HdfId" runat="server" /> <asp:HiddenField ID="HdfName" runat="server" /> <asp:HiddenField ID="HdfPhone" runat="server" /> <%--'false': Avoid query execution before 'BtnQuery' click.--%> <asp:HiddenField ID="HdfDoQuery" runat="server" Value="false" /> <%-- GridView --%> <asp:GridView ID="GrvMyData" runat="server" AutoGenerateColumns="False" DataSourceID="OdsMyData"> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> </Columns> </asp:GridView> <%-- ObjectDataSource and parameters related to Hidden Fields --%> <asp:ObjectDataSource ID="OdsMyData" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="QueryMyDataPoco" TypeName="Q11876988WebApp.FilterGridViewODS"> <SelectParameters> <asp:ControlParameter ControlID="HdfId" ConvertEmptyStringToNull="False" Name="id" PropertyName="Value" Type="String" /> <asp:ControlParameter ControlID="HdfName" ConvertEmptyStringToNull="False" Name="name" PropertyName="Value" Type="String" /> <asp:ControlParameter ControlID="HdfPhone" ConvertEmptyStringToNull="False" Name="phone" PropertyName="Value" Type="String" /> <asp:ControlParameter ControlID="HdfDoQuery" ConvertEmptyStringToNull="False" Name="doQuery" PropertyName="Value" Type="Boolean" /> </SelectParameters> </asp:ObjectDataSource> </div> </form> </body> </html>
FilterGridView.aspx.cs:
public partial class FilterGridView : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void BtnQuery_Click(object sender, EventArgs e) {
FilterGridViewODS.cs:
MyDataPoco.cs:
public class MyDataPoco { public String Id { get; set; } public String Name { get; set; } public String Phone { get; set; } }
Full source: Q11874496WebApp.7z
Hailton
source share