1

これが私の列クラスで、このコードを radgrid に追加しました

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Telerik.Web.UI;

namespace EFDemo.Views.Controls
{
    public class HpGridButtonColumn : GridButtonColumn{
        public string LinkedTab;

        public override void InitializeCell(System.Web.UI.WebControls.TableCell cell, int columnIndex, Telerik.Web.UI.GridItem inItem)
        {
            //if (inItem is GridHeaderItem)
            //{
            //    cell.Text = this.DataField;
            //}
            //if (inItem is GridDataItem)
            //{
            //    string ID = (string) inItem.OwnerTableView.DataKeyValues[inItem.ItemIndex]["CustomerID"];
            //    cell.Controls.Add(new LiteralControl(ID));
            //}
            base.InitializeCell(cell, columnIndex, inItem);
        }

        public override GridColumn Clone()
        {
            HpGridButtonColumn col = new HpGridButtonColumn();

            //you should override CopyBaseProperties if you have some column specific properties
            col.CopyBaseProperties(this);

            return col;
        }

        protected override void CopyBaseProperties(GridColumn FromColumn)
        {
            base.CopyBaseProperties(FromColumn);
            ((HpGridButtonColumn)FromColumn).LinkedTab = LinkedTab;
        }
    }
}

protected void HPRadgrid_ColumnCreating(object sender, GridColumnCreatingEventArgs e)
{
    if ((e.ColumnType == typeof(HpGridButtonColumn).Name))
    {
        e.Column = new HpGridButtonColumn();
    }
}

問題は、プロパティ [linkedTab] がポストバックで復元されないことです。ヌルです。また、列の clone メソッドが呼び出されていません。これが、プロパティが復元されていない理由だと思います。

4

0 に答える 0