我編寫了一個小程序來過濾網格視圖中的記錄,並根據用戶輸入到文本框中的內容進行過濾。與此相關的問題是,用戶無法快速輸入,GridView需要時間來顯示。我想讓它更快,所以用戶不會注意到延遲。任何建議使這項工作更好?在gridview中篩選記錄
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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">
<script type="text/javascript">
function runPostback() {
document.forms["form1"].submit();
document.getElementById("TextBox1").focus();
}
function getFocus(){
var text = document.getElementById("TextBox1");
if (text != null && text.value.length > 0) {
if (text.createTextRange) {
var FieldRange = text.createTextRange();
FieldRange.moveStart('character', text.value.length);
FieldRange.collapse();
FieldRange.select(); } }
}
function TriggerPostBack(control, arg){
__doPostBack(control, arg);
}
function SetDelay() {
// setTimeout("runPostback()",3000);
}
</script>
<head runat="server">
<title>Untitled Page</title>
</head>
<body onload="getFocus()">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div> <asp:TextBox ID="TextBox1" runat="server" Width="312px" OnTextChanged="Code_TextChanged" onkeyup="TriggerPostBack('control', 'arg')" ></asp:TextBox>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TextBox1" />
</Triggers>
<ContentTemplate>
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
------------------------------ SERVER SIDE CODE ---------- -----------------------------
public partial class _Default : System.Web.UI.Page
{
DataTable myDataTable = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
//TextBox1.Attributes.Add("onkeyup", "Code_TextChanged");
if (!IsPostBack)
{
GridView1.DataSource = generateDATATABLE();
GridView1.DataBind();
}
}
public void RaisePostBackEvent(string eventArgument)
{
BindgrdView();
}
public DataTable generateDATATABLE()
{
DataColumn myDataColumn;
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "ID";
myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Link";
myDataTable.Columns.Add(myDataColumn);
myDataTable.Rows.Add("01", "G Powder");
myDataTable.Rows.Add("02", "G Eye Drops");
myDataTable.Rows.Add("03qq", "G Syrup");
myDataTable.Rows.Add("0333", "G Syrup");
myDataTable.Rows.Add("0453", "G Syrup");
myDataTable.Rows.Add("0333", "G Syrup");
myDataTable.Rows.Add("03666", "G Syrup");
myDataTable.Rows.Add("0333", "G Syrup");
myDataTable.Rows.Add("0453", "G Syrup");
myDataTable.Rows.Add("033w8883", "G Syrup");
myDataTable.Rows.Add("03666", "t Syrup");
myDataTable.Rows.Add("038833", "t Syrup");
myDataTable.Rows.Add("048853", "t Syrup");
myDataTable.Rows.Add("032233", "t Syrup");
myDataTable.Rows.Add("0322666", "t Syrup");
myDataTable.Rows.Add("038833", "t Syrup");
myDataTable.Rows.Add("048853", "t Syrup");
myDataTable.Rows.Add("032233", "t Syrup");
myDataTable.Rows.Add("0322666", "t Syrup");
myDataTable.Rows.Add("038833", "t Syrup");
myDataTable.Rows.Add("048853", "t Syrup");
myDataTable.Rows.Add("032233", "t Syrup");
myDataTable.Rows.Add("038833", "t Syrup");
myDataTable.Rows.Add("048853", "t Syrup");
myDataTable.Rows.Add("032233", "t Syrup");
myDataTable.Rows.Add("038833", "t Syrup");
myDataTable.Rows.Add("048853", "t Syrup");
myDataTable.Rows.Add("032233", "t Syrup");
myDataTable.Rows.Add("038833", "t Syrup");
return myDataTable;
}
protected void Code_TextChanged(object sender, EventArgs e)
{
myDataTable = generateDATATABLE();
if (myDataTable.Rows.Count > 0)
{
if (myDataTable.Rows.Count > 0)
{
string filterExp = "ID >= "+"'"+TextBox1.Text+"'";
DataRow[] temp= myDataTable.Select(filterExp);
GridView1.DataSource = convertTODT(temp);
GridView1.DataBind();
}
}
}
public DataTable convertTODT(DataRow[] temp)
{
DataTable DT = new DataTable();
DataColumn myDataColumn;
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "ID";
DT.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Link";
DT.Columns.Add(myDataColumn);
foreach(DataRow dr in temp)
{
DT.ImportRow(dr);
}
return DT;
}
public void BindgrdView()
{
myDataTable = generateDATATABLE();
if (myDataTable.Rows.Count > 0)
{
GridView1.DataSource = myDataTable.Select("ID like" + "'" + TextBox1.Text.ToString() + "'");
GridView1.DataBind();
}
}
}
嘗試使用的jqGrid http://www.trirand.net/demoaspnet.aspx –