Springen naar inhoud


- - - - -

Usercontrol postBack


  • Log in a.u.b. om te beantwoorden
Er zijn 54 reacties in dit onderwerp

#1 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 15 juni 2011 - 11:45

Hallo,

Ik heb het volgende probleem.

Er is een pagina die gebruik maakt van een Masterpage. In deze pagina zit een UserControl.

In de usercontrol kan de gebruiker een nieuw hoofdstuk toevoegen aan de procedures. Als er op de knop opslaan wordt geklikt, dan moet de naam het hoofdstuk worden opgeslagen in een database.

Het probleem is dat als ik op opslaan klik de hele pagina wordt gerefreshed en de pagina in zijn "onload" de eerst usercontrol weer toont en niet de usercontrol om de hoofdstukken toe tevoegen.

De hoofdstukken usercontrol wordt trouwens dynamisch ingeladen.

Hoe kan ik er voor zorgen dat de pagina niet refreshed, of dat hij weer bij het laatste usercontrol uitkomt. ;)

Groeten,

Eviltwin

#2 SilentBob

SilentBob

    Professional Developer

  • Leden
  • PipPipPipPip
  • 360 berichten
    Laatst bezocht
  • LocatieHome

Geplaatst op 15 juni 2011 - 14:32

Je zou een UpdateControl kunnen gebruiken.
Dit is een AJAX panel en update enkel alles wat hierbinnen staat.
In de boeken van Murach is er zeker een voorbeeld project, want hebben dat gebruikt op 't school. (alleen kan 'k er nu ni aan, want zit op de job ;) )

#3 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 15 juni 2011 - 14:58

Wederom bedankt voor je reactie SilentBob,

Ik zat zelf ook al aan AJAX of jquery te denken om het te gaan oplossen.
De reden waarom ik daar niet aan begonnen was is dat ik dacht dat ASP.NET zelf het submitten naar een usercontrol moet kunnen afhandelen.

Toch maar weer terug naar PHP als dit projectje af is  ;)  

Ik ga even kijken of ik het voorbeeld van Murach werkent kan krijgen.

Groeten,

Eviltwin

#4 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 16 juni 2011 - 08:53

Hallo,

Zelf ben ik nogal gecharmeerd van ASP .NET MVC 3. Dit framework bevat een hoop helper classes die gebaseerd zijn op jquery waarmee je simpel ajax requests kan doen en aan de server kant op een eenvoudige manier complete ingevulde views of gewoon json kan returnen.

Webforms kent een UpdateControl die werkt met ajax. Dit updatepanel update de content die in de ContentTemplate staan op basis van de Trigger(s) die je opgeeft. Het is perfect mogelijk om meerdere UpdatePanels op je pagina te plaatsen.

Mvg,

Jark

#5 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 16 juni 2011 - 10:30

Ik ben  ASP .NET MVC 3 momenteel aan het installeren .

Even kijken of ik het hiermee voor elkaar kan krijgen om een Usercontrol te laten submitten zonder de hele pagina te refreshen.

Groeten,

Eviltwin

#6 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 16 juni 2011 - 15:00

Opzich ziet het er wel redelijk makelijk en begrijpbaar uit.
Nu wil ik hier wel mee verder alleen zie ik in tutorials alleen maar Entity Framework voorbeelden voor database connecties die dan lokaal worden aangemaakt (in de mee geleverdere compact SQL software).

Is het misschien ook mogelijk om dit werkent te krijgen met een MSSQL 2005 express database???

Groeten,

Eviltwin

#7 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 16 juni 2011 - 16:28

Hallo,

Jazeker, dit is een kwestie van de desbetreffende connectionstring te laten wijzen naar de 2005 database (staat meestal in de web.config).

Mvg,

Jark

#8 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 17 juni 2011 - 09:41

Ik heb geprobeerd om mijn huidige DB te koppelen aan mijn ASP programma, maar dit wil niet echt lukken  :oops:

In de pagina krijg ik de volgende fout

Citeren

Exception Details: System.Data.SqlClient.SqlException: Objectnaam dbo.hoofdstukkens is ongeldig.

Source Error:

Line 19:         public ViewResult Index()
Line 20:         {
Line 21:             return View(db.hfdstkDB.ToList());
Line 22:         }
Line 23:


Source File: C:\Users\stage\Documents\Visual Studio 2010\Projects\etd-beheer-mvc\etd-beheer-mcv\etd-beheer-mcv\Controllers\HoofdstukkenController.cs    Line: 21

Als ik de zoek functie van VS gebruik dan kom ik dbo.hoofdstukkens helemaal nergens tegen  :roll:

De tabel in de database heet dbo.hoofdstukken (zonder de s).

Heeft iemand een idee hoe ik dit moet oplossen?

Groeten,

Eviltwin

#9 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 17 juni 2011 - 13:10

Ik heb het zelf al gevonden,

het schijnt dat de MVC  een bug heeft en zelf een "s" toevoegd aan tabelnamen.

oplossing voor (visual studio):

Code:

using System.Data.Entity;
using System.ComponentModel.DataAnnotations;

namespace etd_beheer_mcv.Models
{
	public class hoofdstukken
	{
		[Key]
		public int hoofdstuk_id { get; set; }
		public int print_id { get; set; }
		public string titel { get; set; }
		public int hoofdstuk_volgorde { get; set; }
	}

	public class hoofdstukkenDBContext : DbContext
	{
		public DbSet<hoofdstukken> hfdstkDB { get; set; }

		protected override void OnModelCreating(DbModelBuilder modelBuilder) 
		{ 
			modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>(); 
		}
	}
}




Voor visual webdeveloper:

Code:
protected override void OnModelCreating(ModelBuilder modelBuilder)		 
{
	 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();		 
}



Groeten,

Eviltwin

#10 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 17 juni 2011 - 16:58

Het wordt we heel erg raar :s

Ik had vanmiddag werkent, maar op een gegevenmoment werkte mijn toetsenboard niet meer in VS. Toen heb ik de PC opnieuw opgestart, maar nu geeft VS telken de volgende (soort) fouten:

Citeren

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Keyword not supported: 'initial catalog'.

Source Error:

Line 19:         public ViewResult Index()
Line 20:         {
Line 21:             return View(db.printenDB.ToList());
Line 22:         }
Line 23:

In het begin werkte de query string wel, maar maakt niet uit wat ik nu doe, hij geeft telkens de fout met Keyword not supported: "xxxxxxxx"

De fout is of server, of data source  of elke andere mogelijkheid in de connections string.....

Ik heb al twee keer een nieuw project gestart en van voor af aan opnieuw begonnen, maar telkens weer de zelfde fout..... Ik wordt hier wel knap moedeloos van  :roll:


Heeft iemand hier ervaring mee of een oplossing voor??

Ik maak verbinding met een MSSQL server (lokaal) en gebruik "Windows authentication".

ik gebruik de volgende connectionstring:


Code:
  <connectionStrings>
	<add name="printenDBContext"
		 connectionString="Data Source=localhost/SQLEXPRESS; Database=easy tester deluxe; Integrated Security=SSPI" 
		 providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

Alle hulp is welkom....


Groeten,

Eviltwin

#11 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 17 juni 2011 - 21:55

Hallo,

Wat je zou kunnen doen is de repair functie van Visual Studio 2010 even uitvoeren. Het lijkt erop dat er iets niet helemaal lekker is met je systeem. Ook daarna even asp .net mvc 3 weer opnieuw installeren of repareren.

De reden waarom hij bij jou eerst niet werkte is geen bug in entity framework code first, maar komt doordat hij bij code first uit gaat van een bepaalde conventie van tabelnamen etc. Bij jou kwam die blijkbaar niet overeen met hoe microsoft daar over dacht, maar dat komt bij mij ook wel eens voor :roll:

Mvg,

Jark

#12 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 20 juni 2011 - 13:28

Jark zei:


Wat je zou kunnen doen is de repair functie van Visual Studio 2010 even uitvoeren. Het lijkt erop dat er iets niet helemaal lekker is met je systeem. Ook daarna even asp .net mvc 3 weer opnieuw installeren of repareren.


Wederom bedankt Jark , dat bleek te werken... :roll:

Werkt opzich wel lekker dat MVC (als je het door krijgt en het niet te hard bugt).
Gaat vooral lekker rap, éénkeer de juiste opbouw maken en de CRUD wordt compleet voor je gedaan... Wat wil een luie programmeur nog mee  :oops:

Groeten,

Eviltwin

#13 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 20 juni 2011 - 13:36

Hallo,

Tja, soms doet Visual Studio een beetje raar :roll:

Zelf vind ik ASP .NET MVC 3 een hele verbetering t.o.v. WebForms, je vrijheid is opeens veel groter. WebForms wil ik nu eigenlijk niet meer gebruiken ^^

Een echte aanrader zijn de videotutorials van pluralsight over asp .net mvc, deze zijn gratis tot de beschikking gesteld door Microsoft --> http://www.asp.net/mvc/pluralsight.

Mvg,

Jark

#14 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 20 juni 2011 - 14:01

Jark zei:


Een echte aanrader zijn de videotutorials van pluralsight over asp .net mvc, deze zijn gratis tot de beschikking gesteld door Microsoft --> http://www.asp.net/mvc/pluralsight.

Thuis maar even kijken naar een inleiding voor Jquery / ajax :roll: was ik namelijk wel vanplan te gebruiken, anders moet je telkens de pagina gaan refreshen ect.. terwijl ik uit één overzicht alles wil kunnen veranderen.

Even een voorbeeld van wat ik wel met jquery / ajax als bijlage.

Bovenin heb je een listbox met hoofdstukken, als je daar op klikt, moet je de bijbehorende sub-items kunnen zien, en  een nieuw sub-item kunnen maken.

In PHP zal ik een DIV's gebruiken en de inhoud van een andere PHP-pagina er in zetten met jquery, en deze opniuw laden met klik-events ect... alleen weet ik niet tot hoever asp.net dat  ook kan... maar daar kan ik vanaaf dan wel even naar kijken.

Groeten,

Eviltwin

#15 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 21 juni 2011 - 11:12

Volgende vraagje  :roll:

Ik heb een database-tabel met de volgende velden:

        test_id(int)
        hoofdstuk_id (int)
        naam (varchar 50)
        volgorde (int)
        protocol_id (int)
        register (int)
        write_data (varchar 50)
        gelijk (bit)
        read_data1 (varchar 50)
        read_data2 (varchar 50)

    }


Ik heb in de MS database de volgende velden Allow null:

(deze geven geen probleem, wellicht omdat deze varchar zijn)
write_data
read_data1
read_data2


(deze velden wel problemen)
register
gelijk



Als ik in VS bezig ben met C# geeft dit geen problemen, maar als ik in MVC 3 deze velden gebruik,  dan krijg ik telkens weer de fout(verschillen iets per veld, maar komt op het zelfde neer):

Citeren

The 'register' property on 'testen' could not be set to a 'null' value. You must set this property to a non-null value of type 'Int32'.

Weet iemand hoe ik dit kan oplossen (zonder de DB aan te passen).

Groeten,

Eviltwin

#16 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 21 juni 2011 - 12:11

Hallo,

Hoe heb je die property gedefinieerd?

Als hij null mag zijn in de database dan moet je hem in je code ook als nullable definieren.

Volgens mij ging dat voor C# als volgt:
Visual Basic Code:
int? nullabelInt = null;


Er is namelijk een verschil tussen of hij 0 mag zijn of null. In een string (varchar) mag je altijd null stoppen, dus dit werkt altijd.

Zie ook --> http://msdn.microsof...y/1t3y8s4s.aspx.

Mvg,

Jark

#17 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 21 juni 2011 - 13:58

Bedankt Jark,

Zoals gebruikelijk lost dat mijn probleem op  :lol:

Ik heb btw de filmpjes op de link http://www.pluralsight-training.net/ gekeken. Die zijn erg nuttig en duidelijk. (helaas geen source van te downloaden, maar je kan niet altijd alles hebben  :oops: )

Ik gun je alleen geen rust, want er is al een volgend probleem  :roll:

Hoe kan het dat mijn pagina niet data inlaad met ajax, maar de data in een nieuw venster opent?


ik heb het volgende:

Index.cshtml
Code:
	@Ajax.ActionLink("Update testen",
					"testenView", new AjaxOptions
						{
							UpdateTargetId = "testen-holder",
							InsertionMode = InsertionMode.Replace,
							HttpMethod = "GET"
							
						})

					<div id="testen-holder">
						 
					   
					</div>	   
 
  

HoofdstukkenController
Code:
		public PartialViewResult testenView()
		{
			Thread.Sleep(1000);
			var testen = e.Testen.ToList();
			return PartialView("_testen", testen);
		}


_testen.cshtml
Code:
@model IEnumerable<etd_beheer_mcv.Models.testen>

<div>
	<select multiple=multiple id="sb-hoofdstukken">
		@foreach (var item in Model.OrderBy(t => t.volgorde))
		{			
			<option value="@Html.DisplayFor(modelItem => item.test_id)" >
				@Html.DisplayFor(modelItem => item.naam) 
			</option>					
		}
	</select>				
</div>

Als je meer gevens nodig hebt dan moet je het even melden.

Groeten,

Eviltwin

#18 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 21 juni 2011 - 14:25

Ik heb het zelf al gevonden.

In de layout pagina miste ik de volgende code:

    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
  -->DEZE MISTE  <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>

Voor de gene die deze post ooit lezen omdat ze het zelfde probleem hebben:
De volgorde van de scripts is WEL belangrijk. :roll:

Groeten,

Eviltwin

#19 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 21 juni 2011 - 14:49

Hallo,

Ja dit klopt, geven ze ook aan in de jquery training van asp .net mvc op pluralsight :roll:

Mvg,

Jark

#20 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 22 juni 2011 - 12:03

Hey,

Misschien een simpele vraag, maar ik kan het zo zelf niet vinden.

Als ik een Create optie van MVC gebruik, dan geeft hij tabel met alle properties. Als één van de velden een key naar een andere tabel is, hoe kan ik deze dan al vast invullen (wordt meegegeven via een get).

Als ik deze probeer mee tegeven via de viewbag, dan kan ik deze niet in het veld krijgen  :oops:. Op onderstaande manier komt deze er achter te staan.

Code:
		<div class="editor-field" id="hidden">
			@Html.DisplayFor(model => model.print_id)
			@viewBag.print_id
			@Html.ValidationMessageFor(model => model.print_id)
		</div>




Tevens nog de volgende vraag:


Als ik probeer een item aan te passen, dan krijg ik de volgende fout:

Citeren

Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

Op internet las ik al dat ik zelf waarschijnlijk de oorzaak ben van het probleem doordat ik ergens anders de waarde heb gewijzigd tussen het laden van de data en het wegschrijven van de nieuwe data...... Maar ik verander helemaal niks  :roll:

Kan iemand mij weer verder helpen??

Groeten,

Eviltwin

#21 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 22 juni 2011 - 14:45

Hallo,

Vraag 1:
Wil je ervoor zorgen dat hij meekomt met een post of get request dan zul je ervoor moeten zorgen dat hij in een hidden form field terecht komt, met zoiets als (niet getest):
Visual Basic Code:
	@Html.HiddenFor(viewBag.print_id)

Als hij een andere id moet krijgen dan de variabele naam dan zul je dit moeten doen dmv één van de overloads.

Vraag 2:
Waar krijg je dit object vandaan? Is dit vanuit een post/get request of laadt je dit object in hetzelfde stuk code?

Mvg,

Jark

#22 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 22 juni 2011 - 16:25

De eerste vraag heb ik opgelost door de waarde in de viewbag mee tegeven, en met jquery op het document.ready event de waarde in de textbox te laten zetten.

Code:
	
$(document).ready(function () {
		$("#print_id").val("@ViewBag.print_id");
 });


De tweede vraag  gaat trouwens op voor Create en voor Edit in zowel de Hoofdstukken als in de Testen.

Zoals in de afbeelding in één van mijn eerdere post te zien is, bestaat het venster uit 3 velden.  De create en Edit paginas worden als PartialViews (geladen door jquery) in het grootte venster weergegeven.

De gebruiker kan dan in dit venster alle waardes opgeven. Wanneerde gebruiker op één van de volgende knoppen klikt dan moet er worden opgeslagen / aangemaakt worden:

Save (submit, welke automatisch een POST is  ? )
Code:
  <input type="submit" value="Create" />

opslaan (input type=button,    POST via jquery)
Code:
  <input id="opslaan-hs" type="button" value="Opslaan" />

Functie in de controller:
Code:

		[HttpGet]
		//aanroepen van de pagina om de data in tevullen
		public PartialViewResult Create(int id)
		{
			ViewBag.print_id = id;
			return PartialView();
		} 



		[HttpPost]
		//verwerken van de ingevoerde data
		public PartialViewResult Create(hoofdstukken hoofdstukken)
		{
			if (ModelState.IsValid)
			{
				e.Hoofdstukken.Add(hoofdstukken);
				e.SaveChanges();
				//return RedirectToAction("Index");  
			}

			return PartialView("Hoofdstukken/Index/" + hoofdstukken.print_id);
		}

Jquery in de pagina:

Code:
	//opslaan knop  (input type=button)
	$("#opslaan-hs").click(function () {
		//CREATE, maken van een nieuw hoofdstuk
		$.post('/Hoofdstukken/Create/', function (data) {
			$('#div-content').html(data);
		});
	});



Op beide manieren van posten komt de zelfde fout terug.


Groeten,

Eviltwin

#23 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 22 juni 2011 - 20:31

Hallo,

Enigste wat ik nog kan bedenken is dat je repository (wat je e variabele voorstelt) shared is.

Mvg,

Jark

#24 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 23 juni 2011 - 12:42

Ik had twee keer een e.xxxxx , toen dat weg was deed deze het weer.

Alleen nu krijg ik bij het createn van de hoofdstukken een ander fout:

Citeren

An error occurred while updating the entries. See the inner exception for details.

Dit heeft er mee te maken dat het veld auto increment is. En de oplossing denk ik ook al gevonden te hebben:


Ik moet de volgende code in de model config edmx zetten. Maar ik kan deze niet vinden..

Code:
 <Property Name="Hoofdstuk_id" Type="integer" Nullable="false" StoreGeneratedPattern="Identity" />



Weet iemand misschien waarde moet staan?

Met de zoek functie van W7 kan ik hem ook niet vinden. en op Google ook niet  :roll:

Groeten,

Eviltwin

#25 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 23 juni 2011 - 13:14

Dit wordt een slechte gewoonte, telkens alles vinden net nadat je het vraagt  :oops:

Wederom gevonden dus :roll:

Groeten,

Eviltwin

#26 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 23 juni 2011 - 13:23

Hallo,

Nou ja, zolang je probleem maar opgelost is :roll:

Maar je hebt volgens mij geen edmx bij EF4: Code First of niet? Heb je het probleem opgelost via de OnModelCreating methode?

Mvg,

Jark

#27 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 23 juni 2011 - 14:24

Ik heb het emdx bestand op de volgende wijze gemaakt:

http://msdn.microsof...y/cc982042.aspx

Maar toen ik het bestand éénmaal had, kreeg ik 24 foutmeldingen en toen heb ik het er weer snel uitgegooid.  :roll:


De oplossing van de volgende fout:

Citeren

An error occurred while updating the entries. See the inner exception for details.


Ik heb in het begin overal de submit knop verwijderd en vervangen door

Code:
<input type="button" ....... />. 

Op het onclick event stuurde ik met Jquery de post omdat ik dan niet de pagina hoefte te refreshen. Ik dacht (en heb nog steeds het idee) dat een post of submit het zelfde is en nam dus aan dat de data verwerkt zal worden. Als ik een break point zet bij de volgende functie, dan komt deze wel aan met sowel de submit als de button:

Code:
 [HttpPost]
		public ActionResult Create(testen testen)
		{
			if (ModelState.IsValid)
			{
				e.Testen.Add(testen);
				e.SaveChanges();
				return RedirectToAction("../Hoofdstukken/index/" +  Session["print_id"].ToString());  
			}

			return RedirectToAction("../Hoofdstukken/index/" + Session["print_id"].ToString());  
		}

Waar het misgaat met de button is op de e.SaveChanges();


Na al die tijd kl**ten en zoeken dacht ik van laat ik het toch maar eens weer met de submit knop proberen. En dat werkte in éénkeer. Een verklaring heb ik er alleen niet voor. En de pagina wordt nu als nog gerefreshed met het submitten. maarjah, ik kan nu wel weer verder.

Groeten,

Eviltwin

#28 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 23 juni 2011 - 16:30

Hallo,

Is het ook mogelijk om één item op te halen uit de DB en deze in de viewBag mee tegeven???

Wat ik probeer is:

Tijdens het laden van de pagina wordt de eerste selectbox (id="sb-hoodstukken") gevult met hoofdstukken, de  bijbehorende testen moeten in een tweede selectbox (id="sb-test") worden geladen.

Ik heb dit eerst met Jquery geprobeerd, maar ik krijg het niet voor elkaar om de waarde van de eerste option in sb-hoodstukken te selecteren. (let op tijdens het laden is er nog geen .val() of .text() omdat er niks geselecteerd is!)

Volgende geprobeerd(en nog andere maar werkte ook niet):

Code:

	$(document).ready(function () {
		alert($("#sb-hoofdstukken option")[0].val());
	});



Eerst de selected index zetten, zodat je wel een .val() kan gebruiken werkt ook niet (Het zetten van de index zelf al niet).

Code:
		$("#sb-hoofdstukken")[0].selectedIndex = 0;


Toen dacht ik van, ik kan het ook via de controller doen:

Code:
//moet nog georderd worden zodat de eerste gepakt wordt, maar laat het eerst maar eens zo werken
ViewBag.first_hoofdstuk = e.Hoofdstukken.Select(h => h.hoofdstuk_id).Take(1);



in de pagina

Code:
@ViewBag.first_hoofdstuk



Resultaat:

Code:
SELECT TOP (1) [c].[hoofdstuk_id] AS [hoofdstuk_id] FROM [dbo].[hoofdstukken] AS [c] 



Dit werkt dus ook niet...

Ik wil nu de waarde in een hidden veld stoppen en daar uit halen met jquery en verder verwerken..


Is er iemand die één van beide opties werkent kan krijgen?


Groeten,

Eviltwin[/code]

#29 Eviltwin

Eviltwin

    Professional Developer

  • Leden
  • PipPipPipPip
  • 299 berichten
    Laatst bezocht 09 mei 2014 15:22
  • LocatieKampen, Nederland

Geplaatst op 24 juni 2011 - 08:49

Goede Morgen,

Een frisse blik doet ook nog wel eens worden op de vrijdag morgen.


Query als volgt
Code:
ViewBag.first_hoofdstuk = (from h in e.Hoofdstukken where h.print_id == id orderby h.hoofdstuk_volgorde select h.hoofdstuk_id).First();

Jquery op de pagina

Code:
	$(document).ready(
		function () {
			$.post('/Hoofdstukken/testenView/' + $("#data").text(), 
				function (data) {
					$('#testen-holder').html(data);
				}
			);			
		});

Html...tja zegt genoeg.
Code:
 <div id="data" class="editor-field hidden" >
	@ViewBag.first_hoofdstuk
</div>

Ik moet zeggen dat ik de bovenstaande query een stuk duidelijker vind dan de manier in de vorige post. Wellicht omdat ik PHP met SQL gewend ben..... en dit er aardig op lijkt.

Groeten,

Eviltwin

#30 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 24 juni 2011 - 08:50

Hallo,

Met die option in je selector van jquery gaat het waarschijnlijk niet werken, zie hieronder een kort voorbeeld (alleen getest in ie8):
Visual Basic Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>  
<script type="text/javascript"> 
$(document).ready(function() {
	var volvoOptions = {  
		 'green' : 'Green',  
		 'yellow' : 'Yellow' 
	};  
	var saabOptions = {  
		 'red' : 'Red',  
		 'blue' : 'Blue',  
	};  

	$("#selectbox1").change(function(f) {
		var select = $("#selectbox2");
		if(select.prop) {  
			var options = select.prop('options');  
		}  
		else {  
			var options = select.attr('options');  
		}  

		$('option', select).remove(); 
		if( $(this).val() == "volvo" )
		{
			$.each(volvoOptions, function(val, text) {  
				options[options.length] = new Option(text, val);  
			}); 
		}
		else if( $(this).val() == "saab" )
		{
			$.each(saabOptions, function(val, text) {  
				options[options.length] = new Option(text, val);  
			}); 
		}
	});
	$("#selectbox1").change();
});
 
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>JQuery select boxes test</title>
</head>
<body>
options1:
<select id="selectbox1">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
</select>
options2:
<select id="selectbox2">
</select>
</body>
</html>


Waarin je natuurlijk de inhoud van de change() functie moet vervangen door de call richting jouw webservice.

Server kant:
Wat ik in een vorig project heb gedaan is een datamodel maken waarin dan in ieder geval de inhoud van de twee lijstjes staat van de gebruiker. Deze model class heb ik aan de view gebonden en vervolgens de @Html.DropDownListFor helpers gebruikt om al de eerste info in te vullen.

Mvg,

Jark




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)