Avatar billede celinder Nybegynder
07. juni 2005 - 15:01 Der er 13 kommentarer og
2 løsninger

listbox1.SelectedValue

jeg har et problem når jeg vil hive den value ud som jeg har fra min listbox i metoden

listbox1_SelectedIndexChanged(....)

min listbox ser sådanne ud:

<asp:listbox id="listbox1" DataValueField="Main_catID" AutoPostBack="True"Runat="server" DataTextField="Main_CatName"></asp:listbox>

Dvs, at jeg bruger ID fra databasen som Value.....

Når jeg viewer source i Internet Explore ser den fin ud: således
//et udpluk

<option value="1">Supported Software      </option>
    <option value="2">Unsupported Software    </option>
    <option value="3">MS Office XP            </option>
    <option value="4">Windows and CUP          </option>
    <option value="5">Computer Hardware (suppor</option>
    <option value="6">Unsupported Hardware    </option>
    <option value="7">Network and Com. Hardware</option>
    <option value="8">Virus and Spyware        </option>

jeg har så lavet en teksbox på siden, som test

i metoden lstMainCat_SelectedIndexChanged( .... )

gør jeg følgende:

        Dim selectedValue As String
        selectedValue = lstMainCat.SelectedValue
        testbox.Text = lstMainCat.SelectedValue



men den kommer med fejl

Hvad gør jeg galt ?
Avatar billede roenving Novice
07. juni 2005 - 15:04 #1
Hvaffen fejl ?-)
Avatar billede celinder Nybegynder
07. juni 2005 - 15:08 #2
at der intet kommer frem i teksboxen,

jeg skal bruge den value til et nyt opslag i databasen, som jeg kalder via stored procedure.......

Men da dette ikke virkede tænkte jeg at jeg kunne lave en tekstbox, hvori jeg skrev den angivne value, men det gør den ikke så før den gør det er jeg lidt gået i stampe.

Kan du umiddelbart se hvad der er galt ?
Avatar billede agertoft Nybegynder
07. juni 2005 - 15:10 #3
Du definerer din listbox med id'et "listbox1". Men metoden du vil hente id'et ud i tager fat i en "lstMainCat" ??
Avatar billede celinder Nybegynder
07. juni 2005 - 15:13 #4
ja det er også rigtigt det fik jeg ikke lige rettet da jeg stillede spørgsmålet.....

nej den kalder fint den rigtige funktion......

listboxen har id=lstMainCat - jeg har bare rettet da jeg stillede spørgsmålet.... forstår du .... ?

Det er ikke det som er fejlen.

jeg er helt sikker for når jeg lækker denne linje i metoden, skriver den hej, når jeg trykker på listboxen

testbox.Text = ("HEJ")

så jeg tror personligt der er noget i vejen med de ID´er eller ?
Avatar billede thomashove Nybegynder
07. juni 2005 - 15:20 #5
...og du husker selvfølgelig at generere din listbox igen i postback FØR du forsøger at tilgå selected value til din textbox
Avatar billede celinder Nybegynder
07. juni 2005 - 15:23 #6
nej der er jeg ikke lige med, hvorledes gøres dette ?
Avatar billede thomashove Nybegynder
07. juni 2005 - 15:31 #7
jeg omformulerer...

Den kode (funktion) hvor du fylder din listbox med data fra databasen - skal du huske at kalde igen når du trykker på et item og den laver autopostback. Ellers ved .Net ikke hvilken selected item du refererer til - da listboxen ikke indeholder de samme værdier som før...

Jeg gætter på at det måske er det der er galt...
Avatar billede celinder Nybegynder
07. juni 2005 - 15:36 #8
hmmm........ det forstår jeg ikke når jeg bare er intereseret i et tal. og det tal får den listbox/har den - , det burde den vel sende med tilbage i autopostback......
Avatar billede thomashove Nybegynder
07. juni 2005 - 15:53 #9
simpelt eksempel...

<form id="Form1" method="post" runat="server">
<asp:listbox id="ListBox1" runat="server" autopostback="True"></asp:listbox>
<asp:textbox id="box1" runat="server"></asp:textbox>
</form>

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        If Not Page.IsPostBack Then
            AddItems()
        End If

    End Sub

    Private Sub AddItems()
        ListBox1.Items.Add("1")
        ListBox1.Items.Add("2")
        ListBox1.Items.Add("3")
        ListBox1.Items.Add("4")
    End Sub

    Sub ListBox1_IndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        box1.Text = ListBox1.SelectedValue.ToString
    End Sub
Avatar billede snepnet Nybegynder
07. juni 2005 - 15:54 #10
du skal ikke fylde listboxen igen, med mindre der er sket ændringer i datagrundlaget (eller du har slået viewstate fra).
faktisk vil det ikke virke hvis du databinder hver gang - med mindre du sørger for at huske det der er gemt selv.
(jeg vil faktisk tro, at dit problem opstår fordi du databinder hver gang).

nedenstående er et eksempel på vs-template. prøv at se om der er noget der er anderledes end den måde du har gjort det på (datakilden er bare et array, men det gør ingen forskel).

// html'en

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="JustSomeExp.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:ListBox id="ListBox1" runat="server" AutoPostBack="True"></asp:ListBox>
        </form>
    </body>
</HTML>


// og lidt kode :
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace JustSomeExp
{
    public class WebForm1 : System.Web.UI.Page
    {
        private static string[] vars = {"hej","med","dig"};
        protected HtmlForm Form1;
        protected System.Web.UI.WebControls.ListBox ListBox1;
   
        private void Page_Load(object sender, System.EventArgs e)
        {       
            if(!IsPostBack)
            {
                ListBox1.DataSource = vars;
                ListBox1.DataBind();   
            }
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.ListBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1_SelectedIndexChanged);
            this.Load += new System.EventHandler(this.Page_Load);

        }

        private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            Response.Write(ListBox1.SelectedValue.ToString());
        }
    }
}

mvh
Avatar billede snepnet Nybegynder
07. juni 2005 - 15:55 #11
nåda - det var tæt :o)
mvh
Avatar billede celinder Nybegynder
07. juni 2005 - 16:01 #12
du har ret snepnet - vil du har point, det var databind, der var fejlen.
Avatar billede snepnet Nybegynder
07. juni 2005 - 16:32 #13
jeg kan bare dele med thomas - hvis det er ok :o)
mvh
Avatar billede thomashove Nybegynder
08. juni 2005 - 11:13 #14
godt du fandt fejlen ;-)
Avatar billede celinder Nybegynder
08. juni 2005 - 15:19 #15
det er i orden - super takt for hjælpen
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