Avatar billede zentral Nybegynder
11. september 2007 - 19:21 Der er 18 kommentarer og
1 løsning

skriv til SQL

Hejsa

jeg er ved at lege med en simpel model af et besked system.

jeg har en sql datasource som connecter til min ms sql db.

så har jeg en side med et gridview som viser beskederne,
og der er en læs knap der.

når man trykker på den så kommer man ind på en side hvor den viser selve beskeden.

det jeg gerne vil ha lavet, er at når man trykker på knappen læs, så checker den om værdien af feldtet "message_read" er true/false og hvis den er false så sættes den til true...

hvordan ska man gøre det ??

ps. det skal være C#
Avatar billede jps6kb Novice
11. september 2007 - 19:50 #1
Det kan du jo gøre på din side som viser beskeden evt.?
Avatar billede zentral Nybegynder
11. september 2007 - 19:53 #2
jo men hvordan, det ska vel gøres med noget c# kode
Avatar billede karsten_larsen Praktikant
11. september 2007 - 19:55 #3
1) Først fanger du trykket via Gridview1_SelectedIndexChanged
2) dernæst kan du lave en store procedure som tjekker om det er false or true
Avatar billede zentral Nybegynder
11. september 2007 - 19:56 #4
jamen er det ik noget du kan forklare med kode ?
Avatar billede karsten_larsen Praktikant
11. september 2007 - 19:59 #5
eller

Select message_read From Database Where Id = Gridview1.selectedvalue

i Codebehind

Dernæst

If Message_read_Value = false then
Update Database Set Message_read = 1 Where Id = gridview1.selectedvalue
end if

If Message_read_Value = true then
Update Database Set Message_read = 0 Where Id = gridview1.selectedvalue
end if


:-) karsten_larsen
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:00 #6
Hvorfor overhovedet checke om den er true, når den under alle omstændigheder skal sættes til true? :-)

Simpelt: Ved visning/læsning af den enkelt besked, sættes den til true.
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:01 #7
Rettelse (første "true" skulle være "false"):

Hvorfor overhovedet checke om den er false, når den under alle omstændigheder skal sættes til true? :-)

Simpelt: Ved visning/læsning af den enkelt besked, sættes den til true.
Avatar billede zentral Nybegynder
11. september 2007 - 20:04 #8
ja det jo egentelig rigtigt, når man så kommer ind på besked læse side ska der vel bar stå noget kode i page_load... men hvad... ?
Avatar billede karsten_larsen Praktikant
11. september 2007 - 20:05 #9
protected void GridView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    object Connection = new System.Data.SqlClient.SqlConnection();
    Connection.ConnectionString = ConfigurationManager.ConnectionStrings("XXXX").ConnectionString;
   
    object Command = new System.Data.SqlClient.SqlCommand();
    Command.CommandText = "[DataTransferTimeStart]";
    Command.CommandType = System.Data.CommandType.StoredProcedure;
    Command.Connection = Connection;
   
    SqlParameter parameterItemId1;
    // gridview1
    parameterItemId1 = Command.CreateParameter();
    parameterItemId1.ParameterName = "@GridView1value";
    parameterItemId1.Direction = ParameterDirection.Input;
    parameterItemId1.SqlDbType = SqlDbType.@int;
    parameterItemId1.Value = GridView1.SelectedValue;
    Command.Parameters.Add(parameterItemId1);
   
    Connection.Open();
    Command.ExecuteNonQuery();
    Connection.Close();
}



Og StoreProcedure i denne stil

    @GridView1value [int]
Declare @Status [bit]

Select @Status = message_read From Database Where Id = @GridView1value

    If @Status = 0
Update Database Set Message_read = 1 Where Id = @GridView1value

      If @Status = 1
Update Database Set Message_read = 0 Where Id = @GridView1value
Avatar billede karsten_larsen Praktikant
11. september 2007 - 20:07 #10
ja , jeg vil give thesurfer ret.

Er det fordi at brugere med bestemte rettigheder skal have lov til at læse den besked eller hur?
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:10 #11
Så vidt jeg kan huske:

Man skal lige huske på, at SelectedIndexChanged faktisk bliver afviklet 2 gange..

Eksempel:
Man har valgt værdi "123", og derefter klikker på "456".
Først skifter den fra "123" til null, og derefter fra null og til "456".

Man skal derfor altid checke, om den nu også har en værdi, i SelectedIndexChanged..

(jeg løb nemlig ind i dette problem før med en ListBox / ListView / tingest)
Avatar billede zentral Nybegynder
11. september 2007 - 20:12 #12
nej det skal egentelig bar være sådan at når man trykker på læs og man komme ind på læse siden så sættes beskeden til læst... så det kan vel gøres i page_load på den pågældende side, eftersom den har fået et id via qurystring
Avatar billede karsten_larsen Praktikant
11. september 2007 - 20:12 #13
Det kan undgåes ved at fjerne "handles Gridview1.Seletedvalue " i eventen og sætte datakeynames til ID
Avatar billede karsten_larsen Praktikant
11. september 2007 - 20:13 #14
nåeh - du vil gerne vide om besked er blevet læst. Jamen så laver du en update hvor den pågældende Id sættes til true.

Update Database Set Message_read = 1 Where Id = gridview1.selectedvalue
Avatar billede zentral Nybegynder
11. september 2007 - 20:17 #15
oky vi er inde på noget af det rigtige nu, men den side hvor beskeden bliver læst på indeholder blot en datalist, som kun udskriver beskeden fra det angivne id... så ska den part med = gridview1.selectedvalue vel ik med ??
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:22 #16
zentral> Du skrev at du fik querystringen med her: 11/09-2007 20:12:12

Det er så querystringen du skal bruge i WHERE..
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:25 #17
zentral> Hvis du bruger koden fra 11/09-2007 20:05:13, skal du kun rette i:

    parameterItemId1.Value = GridView1.SelectedValue;

Denne del bestemmer hvilken besked der opdateres:

parameterItemId1.Value = "id her";

Du skal derefter erstatte GridView1.SelectedValue med id'en..

MEN!
Du skal huske at validere querystringen, før du bruger værdien!

Dvs, du skal checke om værdien i querystringen kan konverteres til et tal, og at værdien ikke er tom.

(mener ikke at en tom værdi kan konverteres til et tal)
Avatar billede karsten_larsen Praktikant
11. september 2007 - 21:54 #18
I event
protected void GridView1_SelectedIndexChanged(object sender, System.EventArgs e)

opdater du databasen,
dernæst laver du vel en server.transfer ("laeseside.aspx?id="&gridview1.selectedvalue)

På din laeseside.aspx
sætter du i page_load noget i denne stil
If page.ispostback = false then

If Request.Querystring ("id") <> "" AND Isnumeric(Request.Querystring ("id")) = true then
' vis besked

else
' vis ikke besked
end if
Avatar billede zentral Nybegynder
05. september 2013 - 22:21 #19
LUK
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