Как увеличить объем данных в динамическом представлении сетки - PullRequest
0 голосов
/ 28 ноября 2011

Мне нужно загрузить большое количество данных в динамическое представление сетки.Вид сетки с кнопкой ссылки, созданной динамически на основе данных.При нажатии на кнопку ссылки должна быть загружена Inner Grid.Он работает нормально.

Но каждый раз, при нажатии кнопки ссылки, на событии, связанном со строкой, запускается привязка к основной сетке.

С в событии, связанном со строкой, внутренняя сетказагружается для каждой строки в основной сетке, которая уже нажата.я поддерживаю состояние кнопки ссылки по ссылке (поле 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;
                    }
                }
            }
        }
    }
}

1 Ответ

1 голос
/ 28 ноября 2011

Пуджа, исходя из вашего комментария выше, я бы удостоверился, что подкачка работает как положено, и вы:

1 - только загрузка 30 записей одновременнодля текущей страницы - не для всех, а для рендеринга только 30.

2 - NOT повторный вызов уровня базы данных для каждой привязки строки;Вы можете загрузить все данные для каждой отдельной строки страницы за раз (так что не более, чем размер страницы, в вашем случае 30), при загрузке данных для текущей страницы, так что ваши вызовы базы данных снизятся до 1 на страницу, а не 1+ размер страницы == 31 в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...