[asp.net]Databinded textbox waarde aanpassen

Pagina: 1
Acties:

  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
Beste mensen,

Ik heb de volgende situatie:
Ik gebruik een datasource op m'n aspx file.
Deze wordt gekoppeld aan een FormView object.
Dit wordt gebruikt om een nieuwe record in de database aan te maken.

Ik kom echter in de knoop te zitten met stamtabellen.
In m'n record sla ik een auteur_id op.
Ik wil echter dat de gebruiker een naam ziet. Die naam komt uit de Profile.

Het probleem is dat ik een textbox moet binden voor het record met de auteur_id, anders slaat ie het record niet op. Ik heb al geprobeerd er een hiddenfield van te maken (en dan de auteur_naam uit de profile in een label te gooien.). Het probleem is dan echter dat de waarde auteur_id dan leeg is en blijft.

In princiepe wil ik dus het te-binden veld verbergen, maar wel een waarde meegeven.
En het lukt mij dus niet om die waarde te setten omdat het veld gebind is.

Als iemand wijs kan worden uit mijn verhaal, heeft iemand dan een mogelijke oplossing voor dit probleem? Alvast bedankt.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:56

TeeDee

CQB 241

Kan je niet met css het veld 'hiden'?

En wat is er mis met een input type=hidden?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
Het probleem is, dat als ik er een hidden van maak (zowel css, als html, als asp), de waarde van het veld leeg blijft.

Het daadwerkelijke probleem is daarom niet het hidden van het veld, maar het geven van een waarde.
Het is een nieuw record, waarvan ik 1 of 2 velden al wil invullen zonder dat de gebruiker hierbij aan te pas komt. Maar elke parameter die ik gebruik moet een Bind() hebben.

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 05-04 18:13
Dan moet je Autogenerate Columns op False zetten, en een template column aan met een label die je bind aan de Primary Key. Deze template column kun je op Hidden zetten.

  • Dennis van der Stelt
  • Registratie: Januari 2000
  • Laatst online: 07-04 12:01
Punt 1, waarom is de link "UBB-codes" niet een popup en "speciale karakters" wel? Nu kan ik alles weer overnieuw typen!!! :( :(
Cryothic schreef op vrijdag 10 maart 2006 @ 14:31:
Het probleem is, dat als ik er een hidden van maak (zowel css, als html, als asp), de waarde van het veld leeg blijft.
Als je control runat=server meegeeft en deze server-side op visible zet, zie je hem in je HTML niet meer en is de waarde dus weer leeg bij een postback.
ASP:
1
2
3
<asp:Label ID="Label1" runat="server" Text="Hallo" />

this.Label1.Visible = false;

Als je een HTML control gebruikt, kan het namelijk wél.
ASP:
1
2
3
4
5
6
<input type="hidden" name="MyHiddenField" value="Hallo">

if (IsPostBack)
{
Response.Write(Request.Form["MyHiddenField"].ToString());
}

Bovenstaande zal waarde "Hallo" printen op postback van je pagina. Alleen heb je nu een read-only value en deze kun je dus server-side niet zetten als in Request.Form["MyHiddenField"] = "Tot ziens";
Je zou ook voor viewstate kunnen gaan en daar iets in zetten, lijkt me eenvoudiger?

Tenzij de ultieme oplossing is dat je een combobox vult met alle auteurs en met postback de SelectedValue uitvraagt. :)

Doe maar gewoon, dan doe je al gek genoeg.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:56

TeeDee

CQB 241

Denk ik nu te simpel?

code:
1
<input type="hidden" name="verborgen" runat=server>

en
C#:
1
verborgen.Value = "woei"

Heart..pumps blood.Has nothing to do with emotion! Bored


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025

It’s nice to be important but it’s more important to be nice


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:56

TeeDee

CQB 241

En? De oplossing van pjonk is verreweg de betere, alleen ben ik altijd benieuwd naar de gebruikte oplossing.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
Ik denk dat ik t probleem niet helemaal duidelijk heb uitgelegd.
Het veld MOET ingevuld worden. Ik wil alleen niet dat de gebruiker hem invult, maar dat ik dat via de source doe.
Het hidden is niet het probleem. HTML input:hiddens, of asp:hiddenfields kunnen daarvoor gebruikt worden.

Het probleem zit hem in het feit dat als ik die control hide, hij nooit een waarde zal krijgen omdat ik niet simpelweg control.value = "aap" ofzo kan doen.

Ik heb via het asp.net forum nu een oplossing aangeboden gekregen waarbij onder de ItemUpdating event E.newvalues() aangepast wordt.

Ik heb deze methode echter nog niet geprobeerd, heb er nog geen tijd voor gehad.
Maar zodra ik hem geprobeerd heb, laat ik t weten.
Lees ik ook meteen even pjonk z'n link.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 22:52

mulder

ik spuug op het trottoir

Je hebt serverside toch het id, VOORDAT je de html genereert? Je kunt overal in HTML het id stoppen, bv ook in de POST-url het id meegeven.

oogjes open, snaveltjes dicht


  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
ja, maar omdat ik het veld bind aan een datasource moet ik het daar mee geven.

Ik heb nu dit gedaan, en dit doet precies wat ik wil:
code:
1
2
3
4
    Protected Sub fvAlgemeen_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles fvAlgemeen.ItemInserting
        'Pas de auteur_id aan
        e.Values("auteur_id") = Profile.AuteurID
    End Sub

fvAlgemeen is het FormView object waarbinnen m'n gegevens staan.
Pagina: 1