简体   繁体   中英

use class extending gridview as control

I made a class extending gridview to add columns generated, when using autogeneratecolumns=true , to the columns collection.

using System;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;

public class GridViewEx1 : GridView
{
private DataControlFieldCollection originalColumns;

public GridViewEx1()
    : base()
{
}
public void RecordColumns()
{
    originalColumns = new DataControlFieldCollection();
    foreach (DataControlField column in Columns)
        originalColumns.Add(column as DataControlField);
}

public void ResetColumns()
{
    if (originalColumns == null)
        RecordColumns();
    else
    {
        Columns.Clear();
        foreach (DataControlField column in originalColumns)
            Columns.Add(column as DataControlField);
    }
}

protected override ICollection CreateColumns(PagedDataSource dataSource, bool useDataSource)
{
    ResetColumns();
    ICollection generatedColumns = base.CreateColumns(dataSource, useDataSource);
    foreach (DataControlField column in generatedColumns)
        if (!originalColumns.Contains(column))
            Columns.Add(column as DataControlField);
    return Columns;
}
}

But I can't figure out how to use this control in the asp.net page?

I tried taking my original gridview and initialising it like so

gv1 = new GridViewEx1(); // gv1 is the id of my gridview

But that just renders my gridview completely empty.

You'll need to register your control on the page.

<%@ Register TagPrefix="CustomControls" Namespace="MyProject.MyControlNamespace" Assembly="MyProject" %>

<CustomControls:GridViewEx1 runat="server" />

More info on registering controls: http://weblogs.asp.net/scottgu/archive/2006/11/26/tip-trick-how-to-register-user-controls-and-custom-controls-in-web-config.aspx

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM