gpt4 book ai didi

gridview - 更新gridview而不重建整个页面

转载 作者:行者123 更新时间:2023-12-05 00:30:47 25 4
gpt4 key购买 nike

我有一个复杂的页面,上面有面板和许多控件。该页面包括一组过滤器和一个网格 View 。通过选择不同的过滤器,我为我的 gridview 收到了不同数量的项目。这一切都有效,但更新速度非常慢,即当我更改过滤器并按下更新按钮时。我需要找到一个解决方案来加速这个 Action !所以这里的问题是:是否可以只更新 gridview 的数据源而不重建整个页面。想法是尽快更新网格 View ;网格中可能有 10,000 多个项目。
谢谢

最佳答案

我建议将 GridView 和过滤器控件放入页面上的 UpdatePanel 中:

<asp:UpdatePanel runat="server" id="upData">
<ContentTemplate>
<div id="filterControls">
<asp:TextBox runat="server" id="txtFilter"></asp:TextBox>
<asp:Button runat="server" id="btnFilter" Text="Filter" />
</div>

<asp:GridView runat="server" id="gvItems">
<EmptyDataTemplate>No results to display</EmptyDataTemplate>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>

完成后,您可以简单地再次获取数据。我已经提供了 vb 和 c# 的代码,因为您没有指定:

C#
protected void Page_Load(object sender, EventArgs e)
{
// get the data initially on page load
if (!IsPostBack)
{
loadDataGrid();
}
}

protected void btnFilter_Click(object sender, EventArgs e)
{
loadDataGrid();
}

private void loadDataGrid()
{
// call a procedure to get the data. This is what I use:
// execDB(string commandText, string commandType, List<SqlParameter> args, bool newConnection);
using (Database db = new Database())
{
List<SqlParameter> args = new List<SqlParameter>();
args.Add(new SqlParameter("@filter1", SqlDbType.VarChar));
args(args.Count - 1).Value = txtFilter1.Text;

DataTable dt = db.execDB("Users_GetAll", "SP", args.ToArray(), false);

if (dt.Rows.Count > 0)
{
gvItems.DataSource = dt;
gvItems.DataBind();
}
}
}

VB
Protected Sub Page_Load(sender As Object, e As EventArgs)
' get the data initially on page load
If Not IsPostBack Then
loadDataGrid()
End If
End Sub

Protected Sub btnFilter_Click(sender As Object, e As EventArgs)
loadDataGrid()
End Sub

Private Sub loadDataGrid()
' call a procedure to get the data. This is what I use:
' execDB(string commandText, string commandType, List<SqlParameter> args, bool newConnection);
Using db As New Database()
Dim args As New List(Of SqlParameter)()
args.Add(New SqlParameter("@filter1", SqlDbType.VarChar))
args(args.Count - 1).Value = txtFilter1.Text

Dim dt As DataTable = db.execDB("Users_GetAll", "SP", args.ToArray(), False)

If dt.Rows.Count > 0 Then
gvItems.DataSource = dt
gvItems.DataBind()
End If
End Using
End Sub

这基本上会导致过滤器按钮更新 GridView 只获取它所需的数据,并且因为它在 UpdatePanel 中,它还避免回发整个页面,这应该会提高页面的整体速度。

希望这可以帮助!

关于gridview - 更新gridview而不重建整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com