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#
Annonceindlæg fra IFS Danmark A/S
11. september 2007 - 19:50
#1
Det kan du jo gøre på din side som viser beskeden evt.?
11. september 2007 - 19:53
#2
jo men hvordan, det ska vel gøres med noget c# kode
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
11. september 2007 - 19:56
#4
jamen er det ik noget du kan forklare med kode ?
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
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.
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.
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... ?
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
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?
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)
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
11. september 2007 - 20:12
#13
Det kan undgåes ved at fjerne "handles Gridview1.Seletedvalue " i eventen og sætte datakeynames til ID
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
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 ??
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..
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)
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
05. september 2013 - 22:21
#19
LUK
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.