【问题标题】:How to large amout of data to dynamic grid view如何将大量数据动态网格视图
【发布时间】:2023-03-20 13:37:01
【问题描述】:

我必须将大量数据加载到动态网格视图中。具有基于数据动态创建的链接按钮的网格视图。 单击链接按钮时,应加载内部网格。它工作正常。

但每次单击链接按钮时,都会触发 Row 绑定事件,以绑定主网格。

在行绑定事件中,内部网格正在加载主网格中的每一行,这已经被点击了。我在 Session 中维护了单击的链接按钮状态(特定行的 id 字段),并使用会话值,在主网格中的每一行上加载内部网格,这与行绑定事件中的会话值匹配。

但是加载需要很长时间。是否有其他方法可以在单击链接按钮时将数据绑定到动态网格视图并维护单击的链接按钮内部网格?

我的代码是

if (e.Row.RowType == DataControlRowType.DataRow)
{

    if (strCallTypeName[intLoop].ToLower() != "total")
    {
        LinkButton lnk = new LinkButton();
        lnk.Text = ((System.Data.DataRowView)(e.Row.DataItem)).Row[strCallTypeName[intLoop]].ToString();
        lnk.CommandArgument = strCallTypeName[intLoop] 
            + "|||" 
            + ((System.Data.DataRowView)(e.Row.DataItem)).Row["UserId"].ToString() 
            + "|||" 
            + ((System.Data.DataRowView)(e.Row.DataItem)).Row["Service"].ToString() 
            + "|||" 
            + e.Row.RowIndex;

        //lnk.Click += new EventHandler(lnk_Click);
        //lnk.CommandName = "Edit";
        lnk.Click += new EventHandler(lnk_Click);
        lnk.ToolTip = strCallTypeName[intLoop];
        lnk.CssClass = "lnk";
        tc.Controls.Add(lnk);

        string strUserID =grdSummaryCall.DataKeys[e.Row .RowIndex].Value.ToString();
        string strSessionUserDetails = string.Empty;
        strSessionUserDetails = (string)Session["GridUserDetails"];
        if (strSessionUserDetails != string.Empty && strSessionUserDetails !=null)
        {
            string[] strSplitUserDetails = strSessionUserDetails.Split(new string[] { "~" }, StringSplitOptions.None);

            Panel pnlTable = (Panel)e.Row.FindControl("pnlTable");

            for (int i = 0; i < strSplitUserDetails.Length; i++)
            {
                string[] strUserDetails = strSplitUserDetails[i].Split(new string[] { "," }, StringSplitOptions.None);
                if (strUserID == strUserDetails[1].ToString())
                {
                    if (pnlTable.Visible == false)
                    {
                        GetUserCallDetails(strUserDetails, e.Row);
                        pnlTable.Visible = true;
                    }
                }
            }
        }
    }
}

【问题讨论】:

  • 我们不知道加载大量数据是什么意思。你能告诉我们什么是大量日期 - 记录数,字段数吗?也许还有一些关于你在做什么的代码。我们无法从这个问题中看出发生了什么。
  • 感谢您的反馈。我的意思是记录的计数。我的 sql 中有超过 20000 条记录,每页绑定 30 条记录。在每一行绑定上,我连接到 sql 并获取特定的链接按钮内部网格详细信息。这个过程需要很长时间。

标签: c# asp.net gridview webforms


【解决方案1】:

Pooja,根据您上面的评论,我会确保分页按预期工作,并且您是:

1 - 为当前页面一次加载 30 条记录,而不是全部并呈现 只有 30 个。

2 - 为每一行绑定再次调用数据库层;在加载当前页面的数据时,您可以一次加载页面每一行的所有详细信息(因此不超过页面大小,在您的情况下为 30),因此您的数据库调用将下降到每页 1 个而不是 1 个+ pagesize == 31 在你的情况下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    相关资源
    最近更新 更多