Avatar billede mcnovy Nybegynder
07. april 2008 - 13:11 Der er 22 kommentarer og
1 løsning

kører C# kode, EFTER siden er færdig loaded

Hej eksperter..

jeg har en side som på ASPX siden loader nogle info fra en mssql,
som bliver lagt ind i en dropdownlist.

og så har jeg min .cs side som loader nogle info fra db som den ligger ind i nogle tekst boxe, men den skal også vælge hvilken dropdown value der skal være valgt.

men når jeg kalder
ex
DropDownList_Main.SelectedValue = str_Main;

så laver den en fejl, som jeg går udfra kommer fordi at værdien ikke findes i dropdown listen, og det gør den ikke fordi at min sqldatasource ikke har lagt sine info ind i dropdown menuen..

så hvordan kan jeg få min funktion på .cs siden til først at kører når jeg ved at hele siden er loaded..??

håber i forstår hvad jeg mener..??

på forhånd tak for hjælpen.
Avatar billede ladyhawke Novice
07. april 2008 - 13:20 #1
ved at lægge koden i PageLoad()?
Avatar billede ladyhawke Novice
07. april 2008 - 13:22 #2
men du er nødt til at fortælle hvad fejlen er, hvis du vil vide om din antagelse er korrekt
Avatar billede mcnovy Nybegynder
07. april 2008 - 13:53 #3
den ligger i min page_load() nu
og der fejler den

det her er fejlen..
'DropDownList2' har en SelectedValue, der er ugyldig, da den ikke findes på elementlisten.
Parameternavn: value
Avatar billede ladyhawke Novice
07. april 2008 - 14:22 #4
du får en dansk fejlmeddelelse???

du skal også lige overveje hvor i side cyklus dine kontroller bliver initialiseret med data og hvornår den værdi du har som skal være selected bliver sat...
Avatar billede mcnovy Nybegynder
07. april 2008 - 14:48 #5
ja... og jeg ved ikke hvordan jeg får den over på engelsk.. :(

men det er jo mit problem.. jeg vil jo gerne sætte værdien efter siden er init.
men jeg ved ikke hvad man kan gøre for at sikre det..

nogen forslag..?
Avatar billede ladyhawke Novice
07. april 2008 - 14:56 #6
du er nødt til at give lidt mere information fra dig:
- hvilken version af .net bruger du?
- hvilket udviklingsmiljø?

og ikke mindst:
hvordan præcist ser din kode ud nu? (hvor/hvordan initialiserer du din drop down?)
Avatar billede mcnovy Nybegynder
07. april 2008 - 15:36 #7
sorry...

.net 2.0 C#
Visual Studio 2005

en stump af koden ser sådan her ud..:

    protected void Page_Load(object sender, EventArgs e)
    {
            txtBread.Text = (string)sqlREAD["Text"].ToString();
            txtTopic.Text = (string)sqlREAD["Topic"].ToString();
            string dropdown1 = (string)sqlREAD["Main_Cat1"];
            DropDownList1.SelectedItem.Text = dropdown1;
            string dropdown2 = (string)sqlREAD["Sub_Cat1"];
            DropDownList2.SelectedValue = dropdown2;
    }

men der hvor at min Dropdown menu bliver genereret foregår i .aspx delen...
og der har jeg brugt Visual Studio i design view til at lave det for mig..
Avatar billede ladyhawke Novice
07. april 2008 - 17:32 #8
den har vel stadig genereret noget kode for dig? dine (string) er vel overflødige, når du har .ToString() på din værdi?

anyways: din dropdown1 hvilken værdi har den når du kører page load? (debug)
Avatar billede mcnovy Nybegynder
07. april 2008 - 18:54 #9
det er heller ikke meningen at jeg skal bruge ToString(), det er mere i fejlfindingen jeg har roden med lidt af hvert..

min dropdowns har ingen værdier, da den jo kører denne del af koden, før den er færdig med at loade siden..

den kode den har genereret er i aspx siden.. du kan da godt få koden her:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
    CodeFile="edit_Guide.aspx.cs" Inherits="Guides_Add_New" Title="Untitled Page" ValidateRequest="false" %>

<%@ Register tagprefix="tinymce" Namespace="Moxiecode.TinyMCE.Web" Assembly="Moxiecode.TinyMCE" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:LoginView ID="LoginView1" runat="server">
        <LoggedInTemplate>
            &nbsp;&nbsp;
        </LoggedInTemplate>
        <AnonymousTemplate>
            Du skal være logget ind for at kunne tilføje en guide
        </AnonymousTemplate>
        <RoleGroups>
            <asp:RoleGroup Roles="admin">
                <ContentTemplate>
            <table style="width: 800px; background-color: wheat">
                <tr>
                    <td style="width: 120px; height: 25px;">
                        Emne:
                    </td>
                    <td style="width: 680px; height: 25px;">
                        <asp:TextBox ID="txtTopic" runat="server" ValidationGroup="Val_Topic" Width="240px"></asp:TextBox>&nbsp;
                    </td>
                </tr>
                <tr>
                    <td style="width: 120px">
                        Hoved Kategori&nbsp;
                        <br />
                    </td>
                    <td style="width: 680px">
                        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1"
                            DataTextField="Main_Cat" DataValueField="Main_Cat_ID" Width="240px">
                            <asp:ListItem Value="2">&quot;Tilf&#248;j ny kategori&quot;</asp:ListItem>
                        </asp:DropDownList></td>
                </tr>
                <tr>
                    <td style="width: 120px">
                        Under Kategori &nbsp;</td>
                    <td style="width: 680px">
                        <asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2"
                            DataTextField="Sub_Cat" DataValueField="Sub_Cat_ID" Width="240px" OnInit="DropDownList2_Init">
                            <asp:ListItem Value="1">&quot;Tilf&#248;j Ny kategori&quot;</asp:ListItem>
                        </asp:DropDownList></td>
                </tr>
                <tr>
                    <td colspan="2">
                   
                          <!-- tinyMCE -->
<script language="javascript" type="text/javascript" src="../tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
    tinyMCE.init({
        mode : "textareas",
        theme : "advanced",
        plugins : "safari,spellchecker,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,pagebreak,imagemanager,filemanager",
        theme_advanced_buttons1_add_before : "save,newdocument,separator",
        theme_advanced_buttons1_add : "fontselect,fontsizeselect",
        theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,separator,forecolor,backcolor",
        theme_advanced_buttons2_add_before: "cut,copy,paste,pastetext,pasteword,separator,search,replace,separator",
        theme_advanced_buttons3_add_before : "tablecontrols,separator",
        theme_advanced_buttons3_add : "emotions,iespell,media,advhr,separator,print,separator,ltr,rtl,separator,fullscreen",
        theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,spellchecker,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        content_css : "/example_data/example_full.css",
        plugin_insertdate_dateFormat : "%d-%m-%Y",
        plugin_insertdate_timeFormat : "%H:%M:%S",
        external_link_list_url : "example_data/example_link_list.js",
        external_image_list_url : "example_data/example_image_list.js",
        flash_external_list_url : "example_data/example_flash_list.js",
        template_external_list_url : "example_data/example_template_list.js",
        theme_advanced_resize_horizontal : false,
        theme_advanced_resizing : true,
        apply_source_formatting : true
    });

</script>
<!-- /tinyMCE -->
                        <asp:TextBox ID="TextBox" runat="server" TextMode="MultiLine" Width="100%" Height="400px"></asp:TextBox></td>
                </tr>
                <tr>
                    <td colspan="2">
                    <br />
                 
                        <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" PostBackUrl="~/Guides/Default.aspx"
                            OnClientClick="Insert()" ImageUrl="~/Tilfoej.jpg" /></td>
                </tr>
            </table>
                </ContentTemplate>
            </asp:RoleGroup>
        </RoleGroups>
    </asp:LoginView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:njepics_gamestatsConnectionString %>"
                SelectCommand="SELECT [Main_Cat_ID], [Main_Cat] FROM [Group_Main_Cat]"></asp:SqlDataSource>
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="System.Type"
                InsertMethod="CreateObj" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
                TypeName="GuideTableAdapters.DataTable1TableAdapter">
                <InsertParameters>
                    <asp:Parameter Name="Sub_Cat" />
                    <asp:Parameter Name="Main_Cat" />
                    <asp:Parameter Name="Topic" />
                    <asp:Parameter Name="Text" />
                </InsertParameters>
            </asp:ObjectDataSource>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:njepics_gamestatsConnectionString %>"
                SelectCommand="SELECT [Sub_Cat_ID], [Sub_Cat] FROM [Group_Sub_Cat]" OnUpdated="SqlDataSource2_Updated"></asp:SqlDataSource>
</asp:Content>
Avatar billede ladyhawke Novice
07. april 2008 - 19:33 #10
http://msdn2.microsoft.com/en-us/library/ms178472(VS.80).aspx

når du debugger din kode hvilken værdi har de dropdownx strenge så? det var det jeg spurgte om, ikke hvad selected item var... hvis ikke de har en fornuftig værdig, kan de jo ikke bruges til at selecte noget

prøv også at finde den kode der initialiserer dine kontroller (initializecomponent?)..
Avatar billede mcnovy Nybegynder
07. april 2008 - 20:28 #11
jamen de har ingen værdier i debug mode :)

jeg kan se at det er init jeg skal prøve mig med..

men jeg har prøvet at skrive i min page_Load
Init += osv
men den kører ikke koden når den er færdig.. :|
Avatar billede mcnovy Nybegynder
07. april 2008 - 20:37 #12
og jeg kan ikke finde nogen steder hvor at jeg kan se hvornår at dropdown boxene bliver initialiseret..

men det kunne godt virke som om at jeg bliver nød til at lave hele koden i .cs delen...
Avatar billede ladyhawke Novice
08. april 2008 - 08:03 #13
har du sat breakpoints i koden og aflæst værdien af de variable? hvis ikke de har en værdi, så kan du jo ikke vælge den "værdi" i din dropdown...
Avatar billede mcnovy Nybegynder
08. april 2008 - 13:01 #14
de har en værdi, og værdien burde findes i min dropdowns..
Avatar billede ladyhawke Novice
08. april 2008 - 13:14 #15
du skrev 07/04 20:28:18 at de ingen værdier har, vil du verificere om du har fundet en konkret værdi for de 2 variable, når du kører programmet med breakpoints, eller ej?
Avatar billede mcnovy Nybegynder
08. april 2008 - 13:30 #16
dropdownlisterne har ingen værdier eller items om man vil,
og ved denne kode
            string dropdown1 = (string)sqlREAD["Main_Cat1"];
der får min dropdown1 den ønskede værdi,
men ved kørsel af denne
            DropDownList1.SelectedItem.Text = dropdown1;
får jeg fejlen
'DropDownList1' har en SelectedValue, der er ugyldig, da den ikke findes på elementlisten.

jeg har kørt den med breakpoints og i debug mange gange..
og det er jo mere eller mindre det samme jeg skriver hver gang..
Avatar billede mcnovy Nybegynder
08. april 2008 - 13:33 #17
men fejlen er (som jeg hele tiden har sagt)
at mine dropdowns ikke er initialiseret med deres databounds,
og jeg derfor ikke kan sætte den ønskede værdi,

og det jeg søger er en måde at være sikker på at de er initialiseret, før jeg kører denne stump kode..

og har prøvet din post fra 07/04-2008 19:33:49
men den vil ikke bruge nogle af de andre værdier som jeg skriver 07/04-2008 20:28:18
Avatar billede ladyhawke Novice
08. april 2008 - 14:09 #18
synes ikke det plejer at være så besværligt :o/ men jeg skal nok grunde lidt over det... jeg ville bare være sikker på at du ikke havde andre, mere banale, issues samtidig
Avatar billede mcnovy Nybegynder
08. april 2008 - 14:32 #19
jamen jeg overvejer lidt bare at lave det hele i .cs koden,
så har jeg da styr på hvornår at tingene bliver initialiseret,
og så slipper man da for mere bøvl.. :)

men smid et svar, så får du lidt point for dit besvær.
Avatar billede ladyhawke Novice
08. april 2008 - 14:43 #20
Ok, men jo det er nemmere at overskue, hvis det hele ligger i cs, især mhp. initialisering... skal nok lige poste hvis jeg finder på noget...
Avatar billede mcnovy Nybegynder
08. april 2008 - 14:56 #21
det lyder godt..
det ville jo være rart at vide hvis jeg skulle bruge noget lignende senere.. :)

tak for hjælpen
Avatar billede mikalj Nybegynder
09. april 2008 - 09:10 #22
Når du bruger datasources til at fylde dropdownlisterne kan du kalde databind på dem for at.. ja, få dem til at databinde.

string dropdown1 = (string)sqlREAD["Main_Cat1"];
DropDownList1.DataBind();
DropDownList1.SelectedItem.Text = dropdown1;


Et lille tip.
hvis "Main_Cat1" i databasen indeholder null (altså ingenting)
så vil
  (string)sqlREAD["Main_Cat1"]
give en fejl (DBNull kan ikke castes til en string)
men
    sqlREAD["Main_Cat1"].ToString();
vil give en tom string, ""
Avatar billede mcnovy Nybegynder
09. april 2008 - 12:38 #23
mikalj
det var jo lige det der skulle til...

vil du ha' nogle point..?
det fortjener du jo :)
tak 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