我已经设法为过滤一个几乎可以正常工作的 gridView 找了一个糟糕的借口,除非我输入了一个不返回任何内容的值。
例如,假设我有值 11、12、23 和 24。如果我在文本框中输入“1”,我只会看到“11”和“12”(即使结果在不同的页面上也有效) . 当我删除“1”时,我将再次看到所有值。出色的!
但是,如果我输入“3”,它会返回一个空表(到目前为止还不错),当我删除 3 时......仍然是空的!有谁知道这是为什么?
这是我的(重要)代码:
ASP
<asp:HiddenField ID="hfText" runat="server" ClientIDMode="Static" />
<input type="text" id="input" style="width: 66px;"/>
<asp:GridView ID="myGv" runat="server"
ShowFooter="True"
AutoGenerateColumns="False" AllowPaging="true" AllowSorting="True"
DataKeyNames="DataKeyId" DataSourceID="ObjectDataSource1" >
<Columns>
<asp:BoundField DataField="DataKeyId" HeaderText="DataKey" Visible="false" InsertVisible="False" ReadOnly="True" SortExpression="DataKeyId" />
<asp:BoundField DataField="header1" HeaderText="Header1" SortExpression="header1" ReadOnly="True" />
<asp:BoundField DataField="header2" HeaderText="Header2" SortExpression="header2" ReadOnly="True" />
</Columns>
<EmptyDataTemplate>
No data found!
</EmptyDataTemplate>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="mySelectMethod" TypeName="WhereItsAt" >
<SelectParameters>
<asp:Parameter Name="header1" Type="String" Defaultvalue="" />
</SelectParameters>
</asp:ObjectDataSource>
jQuery
$(document).ready(function () {
/* This piece of code just makes sure that the text remains after postback */
$('#input').val($('#hfText').val());
$('#input').focus();
var textval = $('#input').val();
$('#input').val("");
$('#input').val(textval);
/*******************/
$('#input').keyup(function (event) {
$('#hfText').val($('#input').val()).trigger('change');
__doPostBack('thisUrl.aspx', $('#input').val());
});
});
});
C#(后面的代码)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
myGv.DataBind();
}
else
{
if (!Request["__EVENTARGUMENT"].Contains("Page$"))
{
reBind(Request["__EVENTARGUMENT"]);
}
}
}
protected void reBind(String sParam)
{
ObjectDataSource1.SelectParameters.Remove(ObjectDataSource1.SelectParameters["header1"]);
ObjectDataSource1.SelectParameters.Add("header1", sParam);
myGv.DataBind();
}
(希望这不是 TL;DR)
编辑 在输入一个不返回任何内容的值然后输入一个应该返回的值后,我收到 javascript 错误“ReferenceError: __doPostBack is not defined”!