0
我的目標是創建一個帶有gridview的網頁,可以通過任何值進行過濾,但是每次將字符輸入過濾器時,標題消失。我在想這個過濾器也在過濾掉標題,但我無法確定。這裏是我的代碼:如何防止Javascript篩選器導致我的GridView標題不顯示?
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
<script src="../Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="../Scripts/jquery-latest.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#fbody tbody").attr('id', 'testing');
});
var table = $('#fbody').DataTable();
new $.fn.dataTable.FixedHeader(table, {
});
</script>
<script>
$(function() { // this will be called when the DOM is ready
$('#MainContent_txtFilter').keyup(function() {
// alert ("hi");
// var data = this.value.split(" ");
var data = this.value.toUpperCase().split(" ");
var jo = $("#testing").find("tr");
if (this.value == "") {
jo.show();
return;
}
//hide all the rows
jo.hide();
//Recusively filter the jquery object to get results.
jo.filter(function (i, v) {
var $t = $(this);
for (var d = 0; d < data.length; ++d) {
// if ($t.is(":contains('" + data[d] + "')")) {
if ($t.text().toUpperCase().indexOf(data[d]) > -1) {
return true;
}
}
return false;
})
//show the rows that match.
.show();
}).focus(function() {
this.value = "";
$(this).css({
"color": "black"
});
$(this).unbind('focus');
}).css
({
"color": "#C0C0C0"
});
});
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<br />
<br />
<br />
Filter: <asp:TextBox ID="txtFilter" runat="server" Width="110px"></asp:TextBox>
<br />
<br />
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server">
<br />
<div style="overflow:auto;height:400px;width:680px;" id="DivMainContent">
<asp:SqlDataSource ID="Pricing" runat="server" ConnectionString="<%$ ConnectionStrings:Database1 %>" SelectCommand="spPricing" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
AllowSorting="True" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black" DataSourceID="Pricing" DataKeyNames="ItemCode">
<Columns>
<asp:BoundField DataField="ItemCode" HeaderText="ItemCode" SortExpression="ItemCode" ReadOnly="True" />
<asp:BoundField DataField="ItemCodeDesc" HeaderText="ItemCodeDesc" SortExpression="ItemCodeDesc">
<ItemStyle Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" >
<ItemStyle Wrap="False" />
</asp:BoundField>
</asp:GridView>
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
我的代碼背後:
protected void Page_Load(object sender, EventArgs e)
{
GridView2.Attributes.Add("id", "fbody");
}
請讓我知道,如果有什麼事可以做,以保持頭在gridview被過濾之後。我感謝任何幫助。謝謝。
我很欣賞這種迴應。我試過這一個,它沒有工作。 gridview沒有過濾任何東西。代碼的這一部分不僅僅是說應該返回什麼部分的gridview?我在考慮.find(「tr」)只是說「如果你找到一個匹配過濾器的單元格,然後返回整行」。例如,如果你用「td」替換了「tr」,並且if 「綠色」被輸入到文本框中,然後過濾器返回包含「綠色」的所有單元格。讓我知道,如果這似乎是正確的。 – dkendo
這已經有一段時間了,但我今天用另一個類似的代碼進行了另一個項目,並且你的建議非常有效。上次我嘗試使用它時,我一定錯過了其他的東西。對不起,延遲和非常感謝幫助。 – dkendo
沒問題,很高興它進來有用:) – Conan