Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Mysko körning i gridview

Postades av 2006-07-10 11:05:53 - Tobias Gladh, i forum asp.net generellt, Tråden har 1 Kommentarer och lästs av 402 personer

Jag har en gridview som sorteras efter ett kolumnvärde som heter intOrder. I gridviewen har jag buttonfields som kan flytta vald post upp och ner. Kör jag sproc:en som hanterar detta så flyttas allt som det ska ett steg, men kör jag det från webben så verkar det köras två steg ochh vald rad flyttas ner två steg. Vad beror detta på?

Här kommer koden:
i aspx.vb-filen

Kod:
<code>
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If e.CommandName = "Up" Or e.CommandName = "Down" Or e.CommandName = "First" Or e.CommandName = "Last" Then
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim selectedRow As GridViewRow = GridView1.Rows(index)
Dim idCell As TableCell = selectedRow.Cells(0)
Dim intId As Integer = Convert.ToInt32(idCell.Text)
Dim mBanner As New banner()
mBanner.Move(intId, e.CommandName.ToString)
GridView1.DataBind()
End If
End Sub
</code>

i banner.vb

Kod:
<code>
Public Sub Move(ByVal id As Integer, ByVal direction As String)
bannerDB.Move(id, direction)
End Sub
</code>

i bannerDB.vb

Kod:
<code>
Public Shared Sub Move(ByVal id As Integer, ByVal direction As String)
Try
Using conn As New SqlConnection(config.ConnectionString)
Dim cmd As SqlCommand = New SqlCommand("tblBannerMove" & direction, conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@intBannerId", id)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
cmd.Dispose()
End Using
Catch ex As Exception
Throw
End Try
End Sub
</code>

och sproc för nedflyttning som exempel

Kod:
<code>
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
DECLARE @localPosition int
DECLARE @ProjectId int
SET @ProjectId = (SELECT intProjectId FROM tblBanner WHERE intBannerId = @intBannerId)
SET @localPosition = (SELECT intOrder FROM tblBanner WHERE intBannerId = @intBannerId)
IF @localposition < ((SELECT COUNT(intBannerId) FROM tblBanner WHERE intProjectId = @ProjectId)-1)
BEGIN
UPDATE tblBanner SET intOrder = @localPosition
WHERE intOrder = (@localPosition +1) AND intProjectId = @ProjectId

UPDATE tblBanner SET intOrder = (@localPosition +1)
WHERE intBannerId = @intBannerId
END
END
</code>


Efter att ha granskat körningen av koden och samtidigt följt eventuell uppdatering av databasen har jag kommit fram till att en uppdatering av intOrder sker efter denna rad:
<code>
If e.CommandName = "Up" Or e.CommandName = "Down" Or e.CommandName = "First" Or e.CommandName = "Last" Then
</code>
Varför och hur kan den göra det? Har även upptäckt att, om jag efter att denna rad körts och raden blivit uppdaterad en gång, stoppar körningen så uppdateras raden trots det en gång till och posten har då flyttats två steg. Är det nåt som körs i bakgrunden som man inte ser i debugläget eller vad är det som pågår?


Uppdatering
Det här blir bara konstigare och konstigare.
om jag sätter en breakpoint på denna raden
<code>
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
</code>
trycker på F11 för att gå vidare så kan den ibland stanna på denna raden tills jag trycker F11 igen då den går vidare och ibland går den vidare direkt. Har den gått vidare till nästa rad direkt
<code>
If e.CommandName = "Up" Or e.CommandName = "Down" Or e.CommandName = "First" Or e.CommandName = "Last" Then
</code>
så går den oftast tillbaka till första raden igen vid nästa tryck på F11 och då har en uppdatering av databasen skett. Annars sker en uppdatering av databasen när men går från den andra raden. Helmystiskt beteende som jag gärna skulle vilja ha en förklaring på. Gör jag nåt fel eller vad är det?


Svara

Sv: Mysko körning i gridview

Postades av 2006-07-11 14:54:41 - Tobias Gladh

Tydligen så är detta ett problem som microsoft har då man använder en buttoncolumn med typen image.

This bug has been forwarded to Microsoft.
This is the answer from Microsoft Bug adn reported issues:

Thanks for reporting the issue. This is a known issue and we are
investigating fixing this in the next service pack. For the time being
you could use the following work around. One obvious workaround is to
change the button type to a regular button or a link button. If you need
an ImageButton, then you can put an ImageButton in a TemplateField. You
may need to handle the Command event on the ImageButton and call
DeleteRow, passing the RowIndex as the CommandArgument, like this:

<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat=server id="ImageButton1" CommandName="Delete"
ImageUrl="..." CommandArgument='<%# DataBinder.Eval(Container,
"RowIndex") %>' OnCommand="ImageButton1_Command" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

protected void ImageButton1_Command(object sender, CommandEventArgs e) {
GridView1.DeleteRow(Int32.Parse(e.CommandArgument. ToString()));
}

Thanks,
The Web Platform and Tools Team


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
3 984
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies