Avatar billede dex_dexter Nybegynder
11. maj 2005 - 09:45 Der er 7 kommentarer og
1 løsning

kalde editcommand fra knap ude på form

vi tager lige det hele fra starten :)

jeg har et datagrid der henter noget data fra et dataset.
jeg har tilføjet nogle datafelter jeg vil redigere og så et antal knapper:
edit, delete, activate og deactivate.

når man så har trykket på edit knappen vil jeg have at alle de andre knapper forsvinder, og update samt cancel fremkommer.

hvordan gør jeg det?
problemet nu og her er at jeg mangler at finde ud af hvordan jeg "fremprovokerer" update og cancel knappen
det er ikke nok at sætte itemindex på datagridded til  feltets id.
Avatar billede snepnet Nybegynder
11. maj 2005 - 09:58 #1
hmm.... nu ved jeg ikke helt hvordan du har lavet det, men den slags er indbygget i griddet.
hvis du tilføjer sådan en her :
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>

og håndterer respektive events fra griddet f.eks.:

private void DataGrid1_EditCommand(object source, DataGridCommandEventArgs e)
{
    this.DataGrid1.EditItemIndex = e.Item.ItemIndex;
    BindGrid();
}

private void DataGrid1_CancelCommand(object source, DataGridCommandEventArgs e)
{
    this.DataGrid1.EditItemIndex = -1;
    BindGrid();
}

så får du den funktionalitet du beder om.

du skal så have en metode (den jeg har kaldt BindGrid() der sørger for databindingen), og du vil givet vis også gerne håndtere denne :

private void DataGrid1_UpdateCommand(object source, DataGridCommandEventArgs e)
{
  // ...
}

eventsne hooker du op på sådan her :
this.DataGrid1.CancelCommand += new DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
this.DataGrid1.EditCommand += new DataGridCommandEventHandler(this.DataGrid1_EditCommand);
this.DataGrid1.UpdateCommand += new DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);

mvh
Avatar billede snepnet Nybegynder
11. maj 2005 - 10:02 #2
(hvis du bruger visual studio .net behøver du ikke skrive noget selv - så kan du lave det hele fra hhv. griddets propertybuilder (højreklik på griddet i designeren, og klik på property builder), og fra designeren på normal vis.
mvh
Avatar billede dex_dexter Nybegynder
11. maj 2005 - 10:15 #3
yup, men hvordan skjuler jeg de andre knapper? det er sådan set det jeg spørger om ;)
Avatar billede snepnet Nybegynder
11. maj 2005 - 10:18 #4
ok ... altså du vil også have fjernet activate og deactivate knapperne ?
mvh
Avatar billede dex_dexter Nybegynder
11. maj 2005 - 10:24 #5
når man trykker på edit knappen skal de andre forsvinde
Avatar billede snepnet Nybegynder
11. maj 2005 - 10:42 #6
hvis du gerne vil have ALLE andre knapper til at forsvinde tror jeg næsten det nemmeste for dig er, at "rette dit grid ind" i en overskrivning af prerender :

fx.:

protected override void OnPreRender(EventArgs e)
{
    foreach(DataGridItem dgi in this.DataGrid1.Items)
    {
        if(dgi.ItemIndex == this.DataGrid1.EditItemIndex)
        {
            Button btn = dgi.FindControl("SomeButton") as Button;
            btn.Visible = false;
        }
    }
    base.OnPreRender (e);
}

det vil i den forbindelse være det nemmeste for dig, hvis du laver knap-kolonner om til templatecolumns (kan du også gøre fra griddets property builder).
du kan så "finde" de respektive knapper med FindControl som vist, hvilket er lidt lettere end at fiske dem pr. index som fx:

Button btn = (Button)dgi.Cells[x].Controls[y];

ovenstående er bare et eksempel ... det fjerner jo ikke alle knapperne, men du kunne så lave noget i denne stil :

if(dgi.ItemType == ListItemType.Item || dgi.ItemType == ListItemType.AlternatingItem)
{
  // hvad der nu skal for at linierne er ok
}

mvh
Avatar billede dex_dexter Nybegynder
08. juni 2005 - 10:24 #7
svar :-)
Avatar billede snepnet Nybegynder
08. juni 2005 - 10:57 #8
vil du have et svar fra mig ?
- hvis det er tilfældet får du da et her :o)
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