Problém ve video seriálu začínáme s ASP.NET   zodpovězená otázka

ASP.NET WebForms

Ahoj, narazil sem na problém u videa 14, kde se vytváří třída MyFormView, která se používá ve Ctenari s TagPrefixem my. Problém je v tom, že Visual Web Developer 2010 Express Tag vůbec nenabídne. Nemáte někdo stejný problém? Děkuji za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste projekt překompilovat, ono se to občas zasekne a nezaktualizuje se to.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mna by zaujimala jedna drobnost. Vo vasich videach vytvarate metody pre udalosti pomocou roletkoveho menu nad editorom kodu. Lenze ja vo VS 2010 Pro, Web developer aj VS2008 mam v roletkovom menu vzdy len moznost Client Object & Events. Zrejme to bude chyba v nastaveni, no skusal som google, skusal som len tak nahmatkovo nieco vo VS a nepodarilo sa mi prepnut to na Server Object & Events. Kvoli tomu pridadam metody trosku komplikovanejsim sposobom. Vedeli by ste mi poradit, kde mam chybu ?

http://prntscr.com/4euok

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Chyba je opět ve VS, mám dojem, že ta roletková menu fungovala jen ve Visual Basicu (v C# ne) a ještě tak nějak jak se jim chtělo. Musíte to napsat ručně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ručně nemusí stačí se přepnout do designe režimu a označit komponetu a v properties předpnout na Event tam má na výběr ty události. Je to teda tak trochu složitý ale jde to.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, tak som to riesil doteraz. Obcas som to pisal rucne. Problem bol ale ten, ze som tak nejak nemohol obsluhovat eventy pre Page(okrem Load) a rucne to neviem.(Pre komponenty ano, ale pre Page nie). Ale vygooglil som, ze sa to da cez Component Designer. Ale aj tak by ma zaujimalo, ako sa to da pri Page rucne ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak problém už není ale ukázal se jiný. :)

Chybová zpráva analýzy: Základní třída zahrnuje pole FormView1, ale její typ (AspNetTutorial.MyFormView) není kompatibilní s typem ovládacího prvku (AspNetTutorial.MyFormView).

Přitom mám tu třídu napsanou podle manuálu. Je teda napsaná V C#. Tak jestli by to mohl být nějaký problém?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pošlete sem ten kód.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI;


namespace AspNetTutorial
{
    [ToolboxData("<{0}:MyFormView runat=\"server\"></{0}:FormView>")]
    public class MyFormView : FormView
    {

        #region "Propertis"
        [DefaultValue(""), Category("Behavior"), UrlProperty()]
        public string RedirectUrl
        {
            get { return (string)ViewState["RedirectUrl"] ?? String.Empty; }
            set { ViewState["RedirectUrl"] = value; }
        }

        [DefaultValue(""), Category("Behavior"), UrlProperty()]
        public string RedirectInsertUrl
        {
            get { return (string)ViewState["RedirectUrl"] ?? String.Empty; }
            set { ViewState["RedirectUrl"] = value; }
        }

        [DefaultValue(""), Category("Behavior"), UrlProperty()]
        public string RedirectCancelUrl
        {
            get { return (string)ViewState["RedirectUrl"] ?? String.Empty; }
            set { ViewState["RedirectUrl"] = value; }
        }

        [DefaultValue(""), Category("Behavior"), UrlProperty()]
        public string RedirectUpdateUrl
        {
            get { return (string)ViewState["RedirectUrl"] ?? String.Empty; }
            set { ViewState["RedirectUrl"] = value; }
        }
        #endregion

        protected override void OnItemInserted(FormViewInsertedEventArgs e)
        {
            base.OnItemInserted(e);

            if (e.Exception == null)
            {
                if (!String.IsNullOrEmpty(RedirectInsertUrl))
                {
                    Page.Response.Redirect(RedirectInsertUrl);
                }
                else if (!String.IsNullOrEmpty(RedirectInsertUrl))
                {
                    Page.Response.Redirect(RedirectInsertUrl);
                }
            }
        }

        protected override void OnItemUpdated(FormViewUpdatedEventArgs e)
        {
            base.OnItemUpdated(e);

            if (e.Exception == null)
            {
                if (!String.IsNullOrEmpty(RedirectUpdateUrl))
                {
                    Page.Response.Redirect(RedirectUpdateUrl);
                }
                else if (!String.IsNullOrEmpty(RedirectUrl))
                {
                    Page.Response.Redirect(RedirectUrl);
                }
            }
        }

        protected override void OnItemCommand(FormViewCommandEventArgs e)
        {
            base.OnItemCommand(e);
            if (string.Equals("cancel", e.CommandName, StringComparison.OrdinalIgnoreCase))
            {
                if (!String.IsNullOrEmpty(RedirectInsertUrl))
                {
                    Page.Response.Redirect(RedirectInsertUrl);
                }
                else if (!String.IsNullOrEmpty(RedirectInsertUrl))
                {
                    Page.Response.Redirect(RedirectInsertUrl);
                }
            }
        }
    }
}
nahlásit spamnahlásit spam 0 odpovědětodpovědět

To vypadá v pořádku, spíš by se hodil kód té stránky - aspx i aspx.cs.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
    CodeBehind="Ctenar.aspx.cs" Inherits="WebApplication4.WebForm3" %>

<%@ Register Namespace="AspNetTutorial" TagPrefix="my" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>
        Detaily ctenare</h2>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:KnihyConnectionString %>"
        DeleteCommand="DELETE FROM [Ctenari] WHERE [IdCtenar] = @IdCtenar" InsertCommand="INSERT INTO [Ctenari] ([Prijmeni], [Jmeno], [DatumNarozeni], [Adresa]) VALUES (@Prijmeni, @Jmeno, @DatumNarozeni, @Adresa)"
        SelectCommand="SELECT * FROM [Ctenari] WHERE ([IdCtenar] = @IdCtenar)" UpdateCommand="UPDATE [Ctenari] SET [Prijmeni] = @Prijmeni, [Jmeno] = @Jmeno, [DatumNarozeni] = @DatumNarozeni, [Adresa] = @Adresa WHERE [IdCtenar] = @IdCtenar">
        <DeleteParameters>
            <asp:Parameter Name="IdCtenar" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Prijmeni" Type="String" />
            <asp:Parameter Name="Jmeno" Type="String" />
            <asp:Parameter Name="DatumNarozeni" Type="DateTime" />
            <asp:Parameter Name="Adresa" Type="String" />
        </InsertParameters>
        <SelectParameters>
            <asp:QueryStringParameter Name="IdCtenar" QueryStringField="id" Type="Int32" />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="Prijmeni" Type="String" />
            <asp:Parameter Name="Jmeno" Type="String" />
            <asp:Parameter Name="DatumNarozeni" Type="DateTime" />
            <asp:Parameter Name="Adresa" Type="String" />
            <asp:Parameter Name="IdCtenar" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    
    <my:MyFormView ID="FormView1" runat="server" DataKeyNames="IdCtenar" DefaultMode="Insert"
        DataSourceID="SqlDataSource1"
        RedirectUrl="Ctenari.aspx">
        <edititemtemplate>
            <table>
                <tr>
                    <td>
                        Prijmeni:
                    </td>
                    <td>
                        <asp:TextBox ID="PrijmeniTextBox" runat="server" Text='<%# Bind("Prijmeni") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"
                            ControlToValidate="PrijmeniTextBox"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        Jmemo:
                    </td>
                    <td>
                        <asp:TextBox ID="JmenoTextBox" runat="server" Text='<%# Bind("Jmeno") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
                            ControlToValidate="JmenoTextBox"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        Narozeni:
                    </td>
                    <!--<td><asp:Calendar ID="Calendar1" runat="server" SelectedDate='<%# Bind("DatumNarozeni") %>'></asp:Calendar></td>-->
                    <td>
                        <asp:TextBox ID="DatumNarozeniTextBox" runat="server" Text='<%# Bind("DatumNarozeni") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*"
                            ControlToValidate="DatumNarozeniTextBox"></asp:RequiredFieldValidator>
                            <asp:CustomValidator ID="CustomValidator1" runat="server" 
        ControlToValidate="DatumNarozeniTextBox" ErrorMessage="Neplatne datum" 
        onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
                            
                    </td>
                </tr>
                <tr>
                    <td>
                        Adresa:
                    </td>
                    <td>
                        <asp:TextBox ID="AdresaTextBox" runat="server" TextMode="MultiLine" Width="400px"
                            Height="100px" Text='<%# Bind("Adresa") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="*"
                            ControlToValidate="AdresaTextBox"></asp:RequiredFieldValidator>
                    </td>
                </tr>
            </table>
            <asp:Button ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
                Text="Zmenit" />
            &nbsp;<asp:Button ID="UpdateCancelButton" runat="server" CausesValidation="False"
                CommandName="Cancel" Text="Zrusit"
                OnClientClick="javascript: return confirm('Opravdu chce te zrusit<');" />
        </edititemtemplate>
        <insertitemtemplate>
            <table>
                <tr>
                    <td>
                        Prijmeni:
                    </td>
                    <td>
                        <asp:TextBox ID="PrijmeniTextBox" runat="server" Text='<%# Bind("Prijmeni") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"
                            ControlToValidate="PrijmeniTextBox"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        Jmemo:
                    </td>
                    <td>
                        <asp:TextBox ID="JmenoTextBox" runat="server" Text='<%# Bind("Jmeno") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
                            ControlToValidate="JmenoTextBox"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        Narozeni:
                    </td>
                    <!--<td><asp:Calendar ID="Calendar1" runat="server" SelectedDate='<%# Bind("DatumNarozeni") %>'></asp:Calendar></td>-->
                    <td>
                        <asp:TextBox ID="DatumNarozeniTextBox" runat="server" Text='<%# Bind("DatumNarozeni") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*"
                            ControlToValidate="DatumNarozeniTextBox"></asp:RequiredFieldValidator>
                            <asp:CustomValidator ID="CustomValidator1" runat="server" 
        ControlToValidate="DatumNarozeniTextBox" ErrorMessage="Neplatne datum" 
        onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
                        
                    </td>
                </tr>
                <tr>
                    <td>
                        Adresa:
                    </td>
                    <td>
                        <asp:TextBox ID="AdresaTextBox" runat="server" TextMode="MultiLine" Width="400px"
                            Height="100px" Text='<%# Bind("Adresa") %>' />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="*"
                            ControlToValidate="AdresaTextBox"></asp:RequiredFieldValidator>
                    </td>
                </tr>
            </table>
            <asp:Button ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
                Text="Vlozit" />
            &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False"
                CommandName="Cancel" Text="Zrusit"
                OnClientClick="javascript: return confirm('Opravdu chce te zrusit<');" />
        </insertitemtemplate>
    </my:MyFormView>
</asp:Content>

using System;
using System.Web.UI.WebControls;

namespace WebApplication4
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // podle parametru v queryStringu urcit rezim komponenty FormView
            if (!this.IsPostBack)
            {
                if (String.IsNullOrEmpty(Request.QueryString["id"]))
                {
                    FormView1.DefaultMode = FormViewMode.Insert;
                }else
                {
                    FormView1.DefaultMode = FormViewMode.Edit;
                }
            
            }

        }

        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            DateTime d;
            args.IsValid = DateTime.TryParse(args.Value, out d);
        }        
    }
}
nahlásit spamnahlásit spam 0 odpovědětodpovědět

To vypadá v pořádku. Píše to tu chybu na nějakém konkrétním řádku?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
 <my:MyFormView ID="FormView1" runat="server" DataKeyNames="IdCtenar" DefaultMode="Insert"

error: Základní třída nezahrnuje pole ForwView1, ale její typ (AspNetTutorial.MyFormView) není kompatibilní s typem ovládacího prvku(AspNetTutorial.MyFormView).

Tohle mi to píše

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, teraz mi vypisuje to iste. Mate projekt rovnako ako ako Webovu Applikaciu a nie Web Site ako v tutoriale ... :/

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback