Avatar billede mosquito Nybegynder
24. september 2007 - 14:34 Der er 12 kommentarer og
1 løsning

Hente værdi fra hiddenfield serverside

Hej
jeg tilføjer dynamisk nogle checkboxe til en tabel ud fra en liste af fag. Med javascript checker jeg om der er valgt mindst et fag, hvis der er, hældes value for de valgte fag i et hiddenfield, som jeg ønsker at tilgå serverside.

Clientside fyldes hiddenfield som forventet, men serverside i min buttonevent, er value null.

Hvordan fanger jeg værdien fra det hiddenfield ud fra ovenstående scenarie?

Hiddenfield er statisk tilføjet til formen.
Avatar billede neoman Novice
24. september 2007 - 14:37 #1
Kan du vise koden hvori du refererer til det hiddenfield i din eventhandler ?
Avatar billede mosquito Nybegynder
24. september 2007 - 14:55 #2
protected void btnSubmit_Click(object sender, EventArgs e)
{
            string selectedFag = hfFag.Value;
}
Avatar billede neoman Novice
24. september 2007 - 14:57 #3
Foretager du selv noget initialisering af værdien i pageload ?
Sidder feltet inde i en kontrol/på en side som har ViewState.Enabled=False ?
Avatar billede mosquito Nybegynder
24. september 2007 - 15:04 #4
hfFag er tilføjet ved drag'n'drop på formen, i en contentplaceholder. Viewstate.Enable = true; Her ses html:

<%@ Page Language="C#" MasterPageFile="PublicMasterpage.Master" AutoEventWireup="true" CodeBehind="PresentationForside.aspx.cs" Inherits="Brobygning.Web.PresentationForside" Title="Untitled Page" %>

<%@ Register Assembly="RadCalendar.Net2" Namespace="Telerik.WebControls" TagPrefix="radCln" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

<asp:panel  ID="pSelection" defaultbutton="btnSubmit" runat="server" Width="700">
  <asp:Label ID="lblRetning" runat="server" Font-Bold="True" Font-Size="Small" Text="V&aelig;lg retning"></asp:Label><br />
  <br />
  <asp:PlaceHolder ID="phFag" runat="server"></asp:PlaceHolder>
  <br />
  <br />
  <radCln:RadDatePicker ID="dpStart" runat="server" AllowEmpty="False" Culture="Danish (Denmark)" MinDate="2005-01-01">
      <DateInput CatalogIconImageUrl="" Description="" DisplayPromptChar="_" PromptChar=" "
        Title="" TitleIconImageUrl="" TitleUrl=""></DateInput>
  </radCln:RadDatePicker>
  &nbsp;
  <asp:Label ID="lblTil" runat="server" Font-Bold="True" Text="til"></asp:Label>&nbsp;
  <radCln:RadDatePicker ID="dpSlut" runat="server" AllowEmpty="False" Culture="Danish (Denmark)"
      MinDate="2005-01-01">
      <DateInput CatalogIconImageUrl="" Description="" DisplayPromptChar="_" PromptChar=" "
        Title="" TitleIconImageUrl="" TitleUrl=""></DateInput>
  </radCln:RadDatePicker>
  &nbsp;
  <asp:Button ID="btnSubmit" runat="server" Text="Vis" Width="40px" OnClientClick="return CheckSelectedFag()" OnClick="btnSubmit_Click" PostBackUrl="~/KursusListe.aspx" /><br /></asp:panel>
  <br />
  <asp:Label ID="lblIntro" runat="server" CssClass="text"></asp:Label><br />
  <br />
  &nbsp;<asp:Label ID="lblNoHold" runat="server" Font-Bold="True" ForeColor="Red" Text="Kursuslisten er under udarbejdelse."
      Visible="False"></asp:Label><br />
  <br />
  <asp:HiddenField ID="hfFag" runat="server" />
</asp:Content>
Avatar billede mosquito Nybegynder
24. september 2007 - 15:07 #5
PostBackUrl er der ikke, da det er samme side der postes til 'PresentaionForside.aspx'
Avatar billede neoman Novice
24. september 2007 - 15:25 #6
Er det denne CheckSelectedFag() som fylder værdi i hfFag ? I så fald, som et "desperate measure", prøv at sætte UseSubmitBehavior=False på btnSubmit.
Avatar billede neoman Novice
24. september 2007 - 15:42 #7
Hvis dette ikke virker, og du ellers ikke selv initialiserer værdien i din kode et eller andet sted, så er det formentligt i JS-koden at "problemet" ligger - jeg er løbet tør for idéer, og der må andre/andet på banen.
Avatar billede mosquito Nybegynder
24. september 2007 - 15:47 #8
Hvis jeg sætter UseSubmitBehavior=False, har jeg ingen postback, og så er jeg jo ligevidt. Her er mit javascript hvis det kan gøre en forskel:

function CheckSelectedFag()
                {
                    var query = document.getElementById('ctl00_ContentPlaceHolder1_hfFag').value;
                    var fag=document.forms[0].fag;
                    var selected = false;
                    for (i=0;i<fag.length;++i)
                    {
                        if (fag[i].checked)
                        {
                            query=query + fag[i].value + ',';
                            selected=true;
                        }
                    }
                    if(!selected)
                    {
                        alert('Der er ingen fag valgt!');
                        return false;
                    }
                }
Avatar billede neoman Novice
24. september 2007 - 15:52 #9
Du har stadig postback, men det er ASP.NEt-mekanikken som sørger for den i stedet for browserens "mekanik". Jeg tvivler at det er løsningen, men har set at det giver effekt i andre sammenhænge:)


I din Js - hvor er det, at der tilskrives en værdi til hfFag ??
Avatar billede neoman Novice
24. september 2007 - 15:55 #10
var query = document.getElementById('ctl00_ContentPlaceHolder1_hfFag').value;
->
var myField= document.getElementById('ctl00_ContentPlaceHolder1_hfFag');

og så i din loop

myField.value=myField.value + fag[i].value + ',';
Avatar billede mosquito Nybegynder
24. september 2007 - 20:19 #11
Thats it :-) takker. Smid et svar, og point er på vej.
Avatar billede neoman Novice
24. september 2007 - 20:26 #12
here goes
Avatar billede mosquito Nybegynder
06. november 2007 - 15:30 #13
ups det var vist et gammel hængeparti, beklager forsinkelsen
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