Avatar billede repsak Nybegynder
14. april 2006 - 20:18 Der er 4 kommentarer og
1 løsning

Event renderes ikke

Jeg har overrided rendermetoden til DataGrid og har skrevet dette

protected override void Render(HtmlTextWriter writer){
    base.Render(writer);

    LinkButton lnk_new = new LinkButton();
    lnk_new.ID = "lnk_new";
    lnk_new.Text = "New";
    lnk_new.Click += new EventHandler(lnk_new_Click);
    lnk_new.RenderControl(writer);
}

men når outputtet vises i browseren så vises linket, men jeg kan ikke klikke på det. Dette renderes: <a id="lnk_new">New</a>

Hvordan får jeg den til at rendere eventet så jeg kan klikke og få postback osv.?
Avatar billede snepnet Nybegynder
14. april 2006 - 20:29 #1
hvis du gerne vil have yderligere kontroller under dit grid - synes jeg du skal lave dig selv en kontrol der indsætter et grid + de ekstra kontroller du ønsker, og det vil normalt være fremgangsmåden at du lægger dine kontroller ind i kontroltræet (hvilket du ikke gør i den kode du har vist) i CreateChildControls....
bruger du ikke version 2.0?
mvh
Avatar billede repsak Nybegynder
15. april 2006 - 18:13 #2
ovenstående er fra en lille kontrol som sammensætter et grid med en linkButton. Jeg bruger version 1.1. Har du et eksampel, for jeg er tydeligvis ikke nok inde i costumcontrols ;(
Avatar billede snepnet Nybegynder
16. april 2006 - 11:59 #3
du kan se et lille eksempel her - bare så du har noget at starte op på:

public class GridControl : Control, INamingContainer
{
    private DataGrid m_Grid;   
    private LinkButton m_Link;
    private object m_GridDataSource;

    public object GridDataSource
    {
        get { return m_GridDataSource; }
        set { m_GridDataSource = value; }
    }

    protected override void OnInit(EventArgs e)
    {
        m_Grid = new DataGrid();
        m_Link = new LinkButton();
        m_Link.Text = "Klik her";
        m_Link.Click += new EventHandler(m_Link_Click);
        base.OnInit(e);
    }
    protected override void CreateChildControls()
    {
        Controls.Add(m_Grid);
        Controls.Add(m_Link);
        base.CreateChildControls();
    }

    public override void DataBind()
    {
        m_Grid.DataSource = m_GridDataSource;
        m_Grid.DataBind();
        base.DataBind();
    }

    void m_Link_Click(object sender, EventArgs e)
    {
        Page.Response.Write("Så er der klikket");
    }
}

du kan prøve den ved noget i denne stil i page_load:
string[] data = { "a", "b", "c" };
GridControl grid = new GridControl();
grid.GridDataSource = data;
form1.Controls.Add(grid);
DataBind();

form1 er din serverside form.

mvh
Avatar billede repsak Nybegynder
16. april 2006 - 20:43 #4
tak for eksemplet. Jeg har en lidt anden konstruktion, men problemet er løst med udgangspunkt i ovenstående. Svar :)
Avatar billede snepnet Nybegynder
16. april 2006 - 20:51 #5
det bare bestemt også bare ment som et udgangspunkt :o)
et svar kommer her.
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester