Удаление 11-й строки в RadGrid делает ее пустой - PullRequest
3 голосов
/ 15 ноября 2010

У меня есть один Telerik RadGrid.Используя метод, я заполняю сетку.Я включил свойство подкачки.Я использовал ItemTemplate -> ImageButton для удаления и редактирования параметров.Я установил размер страницы как 10. Время загрузки страницы работает правильно и заполняет сетку.После вставки 11-й строки начинается разбиение на страницы, и оно будет отображаться на следующей странице с одной записью.Но когда я удаляю 11-ю строку, сетка становится пустой.Я использовал набор данных для привязки записей.

radgrid.DataBind();
dsDataset.Dispose();

Но его item.count равно 0. В чем причина?

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        if (!IsPostBack)
        {
            PopulatePackage();
        }
    }
    catch (Exception ex)
    {
        lblMessage.Text = objUtl.GetErrorMessage(ex, this);
        lblMessage.Visible = true;

protected void gvPackage_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    try
    {
        SqlHelper objSQL = new SqlHelper();
        DataSet dsPackage = new DataSet();
        dsPackage = objSQL.ExecuteDataset("AL_PackageType_List_Retrieve", objUtl.NumericEntry(Session["LocationId"].ToString()));
        gvPackage.DataSource = dsPackage.Tables[0];
        dsPackage.Dispose();
        //PopulatePackage();
    }
    catch (Exception ex)
    {
        lblMessage.Text = objUtl.GetErrorMessage(ex, this);
        lblMessage.Visible = true;
    }
}

private void PopulatePackage()
{
    try
    {
        lblMessage.Text = string.Empty;
        SqlHelper objSQL = new SqlHelper();
        DataSet dsPackage = new DataSet();
        dsPackage = objSQL.ExecuteDataset("AL_PackageType_List_Retrieve", objUtl.NumericEntry(Session["LocationId"].ToString()));
        gvPackage.DataSource = null;
        gvPackage.DataSource = dsPackage.Tables[0];
        gvPackage.DataBind();
        //dsPackage.Dispose();
        if (gvPackage.Items.Count <= 0)
        {
            lblMessage.Text = "No Package Details Found...";
            gvPackage.Visible = false;
        }
        else
        {
            gvPackage.Visible = true;
        }
    }
    catch (Exception ex)
    {
        lblMessage.Text = objUtl.GetErrorMessage(ex, this);
        lblMessage.Visible = true;
    }
}

1 Ответ

0 голосов
/ 15 ноября 2010

Хорошо, насколько я понимаю, у вас есть радгрид, в котором вы разрешили пейджинг и установите размер страницы равным 10. При вставке 11-й записи новая страница отображается с этой 11-й записью.И когда эта 11-я запись удалена, вы просматриваете пустую страницу, вместо того, чтобы показывать страницу с записями от 1 до 10. Я надеюсь, что я здесь.

В любом случае.Я предполагаю, что проблема в том, что Radgrid не имеет данных для страницы, которую вы сейчас просматриваете.

В RadGrid есть событие с именем NeedDataSource.Это событие запускается всякий раз, когда RadGrid необходимо отобразить данные.Вы можете вызвать логику Binding в этом событии и посмотреть, работает ли она для вас.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGrid();
    }
}

private void BindGrid()
{
    RadGrid1.DataSource = "BindingSource";
    RadGrid1.DataBind();
}

protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
    BindGrid();
}

Посмотрите, работает ли это для вас ..

...