Avatar billede ha9953 Nybegynder
11. april 2006 - 15:39 Der er 2 kommentarer og
1 løsning

DetailsView - forskellige spørgsmål

Hej

Jeg har følgende side som jeg bruger til at oprette/rette en post:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <h3>
        Weblog post
    </h3>
    <asp:DetailsView ID="DetailsView1" DataKeyNames="weblogid" AutoGenerateRows="False" runat="server" DataSourceID="ObjectDataSource1" GridLines="None">
        <Fields>
            <asp:BoundField DataField="webloghead" HeaderText="headline" />
            <asp:BoundField DataField="weblogmessage" HeaderText="message" />
            <asp:CommandField  ShowEditButton="True" ShowInsertButton="True" />
        </Fields>
    </asp:DetailsView>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="cms_weblog_select_id"
        TypeName="ClassWeblog" InsertMethod="cms_weblog_insert">
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="0" Name="weblogid" QueryStringField="ID"
                Type="Int32" />
        </SelectParameters>
        <InsertParameters>
            <asp:Parameter Name="webloghead" Type="String" />
            <asp:Parameter Name="weblogmessage" Type="String" />
        </InsertParameters>
    </asp:ObjectDataSource>

</asp:Content>

Codebehind ser ud som følgende:

Partial Class Admin_weblog_weblog_item
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            If Request.QueryString("ID") = "" Then
                DetailsView1.DefaultMode = DetailsViewMode.Insert
            Else
                DetailsView1.DefaultMode = DetailsViewMode.Edit
            End If
        End If
    End Sub
End Class


Mine spørgsmål er så:

1. Er det den rigtige metode jeg bruger når jeg skal skelne imellem om det er oprettelse eller indsættelse der skal foretages? Er der en smartere metode?

2. Hvordan tilgår jeg knappen cancel, når detailsview er i enten edit eller insert mode. Hvis der trykkes på cancel skal der redirectes til en anden side?

Håber det er til at forstå
Avatar billede snepnet Nybegynder
11. april 2006 - 15:53 #1
halløjsa

1:
Jeg synes det er en lidt indirekte måde, men på den anden side giver det måske meget god mening at man vil oprette en ny, hvis man ikke har et id på en eksisterende... såhhh... det vel ok i sidste ende.
ville nok wrappe det i en property, så du havde en pæn programmatisk adgang til det andre steder i koden (hvis du har brug for det).
f.eks.
if(CurrentMode == PageMode.Insert)
...

2:
du kan abbonnere på eventet ItemCommand
OnItemUpdated="dv_ItemUpdated"

og lave noget kode i denne stil:
protected void dv_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
    if (e.CommandName == "Cancel") // bemærk : casesensitivt
    {
        // gør det du vil her - f.eks. Response.Redirect(...);
    }
}

mvh
Avatar billede ha9953 Nybegynder
11. april 2006 - 16:05 #2
Perfekt smid et svar :-)
Avatar billede snepnet Nybegynder
11. april 2006 - 16:30 #3
kommer 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