webForumDet fria alternativet

Extra värden till renderade checkboxar?

.NETur .NET

7 svar · 619 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

Hepp, hepp!
Jag renderar på en sida ett gäng checkboxar. Vissa av dem kommer i förväg kryssas i. När användaren postar tillbaka informationen till servern vill jag veta vilka som redan innan var ikryssade.

Med andre ord vore det trevligt om man i code behind kunde lägga in ett "true/false" värde kopplat till en ListItem och som jag sedan kan hämta vid postback.

Typ. :)

Medlem sedan dec. 19996 721 inlägg
#2

Det komplicerade sättet är att skapa en egen Checkbox-kontroll med den funktionaliteten. Det enkla är att lagra ursprungsvärdena (kommaseparerade) i ett hidden-fält eller i viewstate.

Medlem sedan mars 20021 889 inlägg
#3

Om jag anv'nder t ex ViewState och vill lägga till ett "true"-värde till vissa checkboxar - hur gör jag det och hur kollar jag sedan värdet när sidan postas tillbaka?

Medlem sedan mars 20021 889 inlägg
#4

Det här får jag inte rätt på. :)

Med denna kod lägger jag till data till checkboxar och lägger till id-nummer i ett hidden-fält kallat just "hidden".

            bool b = false;
            String s = "";
            while (dr.Read())
            {
                try
                {
                    b = (Int32.Parse(dr["StatusID"].ToString()) == Int32.Parse(dr["ArendeStatus_Status"].ToString())) ? true : false;
                }
                catch (Exception e) 
                {
                    
                }

                ListItem l = new ListItem(dr["StatusText"].ToString() + " " + dr["ArendeStatus_Datum"].ToString(), dr["StatusID"].ToString());

                l.Selected = b;
                this.check.Items.Add(l);

                [b]if (b) {
                    s += dr["ArendeStatus_Status"].ToString()+";";
                }
                hidden.Text = s;[/b]
            }
            dr.Close();

När formuläret sedan postas tillbaka använder jag denna kod:

    public void StatusSave(string strArende) {

        String[] arrID = hidden.Text.Split(';');
        
        
        for (int i = 0; i < check.Items.Count; i++)
        {
            Boolean b = false;
            for (int j = 0; j < arrID.Length; j++) {
                [b]if (Int32.Parse(check.Items[i].ToString()) == Int32.Parse(arrID[j]))[/b]
                {
                    b = true;
                }
            }

            if (b) {
                if (!check.Items[i].Selected) {
                    //gör delete
                }
            } else {
                if (check.Items[i].Selected) 
                {
                    
                    //gör insert
                }
            }
        }
    }

Men jag får

Exception Details: System.FormatException: Input string was not in a correct format.

på den fetmarkerade raden

:)

Medlem sedan mars 20021 889 inlägg
#5

..

Medlem sedan mars 20021 889 inlägg
#6

Hehe, inte många som är igång idag. Men jag fortsätter att fråga. har ett riktigt sjukt fel här.

                    SqlCommand myCommand = new SqlCommand("insert into ArendeStatus (ArendeStatus_Arende, ArendeStatus_Status, ArendeStatus_Datum, ArendeStatusAnvID) values (@ArendeStatus_Arende, @ArendeStatus_Status, @ArendeStatus_Datum, @ArendeStatusAnvID)", myConnection);
                    myCommand.Parameters.Add("@ArendeStatusAnvID", SqlDbType.Int, 10).Value = UserIdentityName[1];
                    myCommand.Parameters.Add("@ArendeStatus_Arende", SqlDbType.Int, 4).Value = strArende;
                    myCommand.Parameters.Add("@ArendeStatus_Datum", SqlDbType.DateTime).Value = DateTime.Now;
                    myCommand.Parameters.Add("@ArendeStatus_Status", SqlDbType.Int, 4).Value = check.Items[i].Value;

                    

                    try
                    {
                        myCommand.ExecuteNonQuery();
                    }
                    catch (SqlException e) {
                        Message.Text += e.Message;
                    }

Får "Exception Details: System.InvalidOperationException: ExecuteReader requires an open and available Connection. The connection's current state is Closed."

och om jag lägger till Exception Details: System.InvalidOperationException: The connection is already Open (state=Open). får jag:

Exception Details: System.InvalidOperationException: The connection is already Open (state=Open).

:q

Medlem sedan mars 20021 889 inlägg
#7

Alla problem lösta. :)

Medlem sedan aug. 20011 346 inlägg
#8

Vad var problemet, och hur såg lösningen ut? :OO

138 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)