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


Problem med att uppdatera GridView som innehåller en listbox?

Postades av 2007-06-15 13:41:48 - Thomas Kahn, i forum asp.net generellt, Tråden har 0 Kommentarer och lästs av 654 personer

Jag har en GridView som bl.a. innehåller en listbox:

<asp:TemplateField HeaderText="Kund" SortExpression="client_id">

   <EditItemTemplate>
      <asp:ListBox ID="lbxClientId" 
        runat="server" 
        Rows="1" 
        DataTextField="client_name" 
        DataValueField="client_id" 
        EnableViewState="true" 
        DataSourceID="ClientsDataSource" 
        SelectedValue='<%# Bind("client_id") %>'></asp:ListBox>
   </EditItemTemplate>

   <ItemTemplate>
      <asp:Label ID="lblClientId" 
      runat="server" 
      Text='<%# Eval("client_name") %>' />
   </ItemTemplate>

   <FooterTemplate>
      <asp:ListBox ID="lbxClientId" 
      runat="server" 
      Rows="1" 
      DataTextField="client_name" 
      DataValueField="client_id" 
      EnableViewState="true" 
      DataSourceID="ClientsDataSource"></asp:ListBox>
   </FooterTemplate>
</asp:TemplateField>


Den template som är intressant att titta på ovan är EditItem Template. Vidare har jag två ObjectDataSource: en för mitt GridView (ObjectDataSourceMain) och en som används för att populera min ListBox (ClientsDataSource):

<asp:ObjectDataSource ID="ObjectDataSourceMain" 
runat="server" 
TypeName="ProjectsData" 
SelectMethod="Select" 
InsertMethod="Insert" 
DeleteMethod="Delete" 
UpdateMethod="Update">
   <InsertParameters>
      <asp:Parameter Name="client_id" Type="String" />
      <asp:Parameter Name="proj_name" Type="String" />
   </InsertParameters>

   <UpdateParameters>
      <asp:Parameter Name="proj_id" Type="Object"/>
      <asp:Parameter Name="client_id" Type="String" />
      <asp:Parameter Name="proj_name" Type="String" />
   </UpdateParameters>

   <DeleteParameters>
      <asp:Parameter Name="proj_id" Type="Object" />
   </DeleteParameters>


</asp:ObjectDataSource>
   <asp:ObjectDataSource ID="ClientsDataSource" 
   runat="server" 
   TypeName="ClientsSelectData" 
   SelectMethod="Select">
</asp:ObjectDataSource>


Dessa arbetar mot två klasser. Klassen för mitt GridView heter ProjectsData och ser ut såhär:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.ComponentModel;
using System.Data.OleDb;

[DataObject(true)]
public class ProjectsData : SqlData
{
	public ProjectsData()
    {
        TableName = "Projects";
        PrimaryKeyColumnNames = new string[] { "proj_id" };
    }

    [DataObjectMethod(DataObjectMethodType.Insert, true)]
    public void Insert(string client_id, string proj_name)
    {
		using (OleDbConnection cn = new OleDbConnection(DataConnection))
		using (OleDbCommand cm = new OleDbCommand("INSERT INTO projects (client_id, proj_name) VALUES (@client_id, @proj_name)", cn))
        {
            cn.Open();

            cm.CommandType = CommandType.Text;
			cm.Parameters.AddWithValue("@client_id", client_id);
			cm.Parameters.AddWithValue("@proj_name", proj_name);

            cm.ExecuteNonQuery();

            cn.Close();
        }
    }

    public int Count()
    {
        using (OleDbConnection cn = new OleDbConnection(DataConnection))
        using (OleDbCommand cm = new OleDbCommand("SELECT Count(*) FROM projects", cn))
        {
            cn.Open();

            cm.CommandType = CommandType.Text;

            int i = (int)cm.ExecuteScalar();

            cn.Close();

            return i;
        }
    }

    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public DataTable Select()
    {
        DataTable dt = new DataTable(TableName);
        using (OleDbConnection cn = new OleDbConnection(DataConnection))
		using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT projects.*, clients.client_name FROM clients INNER JOIN projects ON clients.client_id = projects.client_id ORDER BY clients.client_name, projects.proj_name", cn))
		
        {
            da.Fill(dt);
            return dt;
        }

    }
    [DataObjectMethod(DataObjectMethodType.Update, true)]
    public void Update(object proj_id, string client_id, string proj_name)
    {
		using (OleDbConnection cn = new OleDbConnection(DataConnection))
		using (OleDbCommand cm = new OleDbCommand("UPDATE projects SET client_id=@client_id, proj_name=@proj_name WHERE proj_id=@proj_id", cn))
        {

            cn.Open();

            cm.CommandType = CommandType.Text;
			cm.Parameters.AddWithValue("@proj_id", proj_id);
			cm.Parameters.AddWithValue("@client_id", client_id);
			cm.Parameters.AddWithValue("@proj_name", proj_name);
			
            cm.ExecuteNonQuery();

            cn.Close();

        }
    }

    [DataObjectMethod(DataObjectMethodType.Delete, true)]
	public void Delete(object proj_id)
    {
        using (OleDbConnection cn = new OleDbConnection(DataConnection))
		using (OleDbCommand cm = new OleDbCommand("DELETE FROM projects WHERE proj_id=@proj_id", cn))
        {
            cn.Open();

            cm.CommandType = CommandType.Text;
			cm.Parameters.AddWithValue("@proj_id", proj_id);

            cm.ExecuteNonQuery();

            cn.Close();
        }
    }
}


Klassen som används för att populera min ListBox heter ClientsSelectData och ser ut såhär:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.ComponentModel;
using System.Data.OleDb;

[DataObject(true)]
public class ClientsSelectData : SqlData
{
	public ClientsSelectData()
	{
		TableName = "Clients";
		PrimaryKeyColumnNames = new string[] { "client_id" };
	}

	[DataObjectMethod(DataObjectMethodType.Select, true)]
	public DataTable Select()
	{
		DataTable dt = new DataTable(TableName);
		using (OleDbConnection cn = new OleDbConnection(DataConnection))
		using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM clients ORDER BY client_name", cn))
		{
			da.Fill(dt);
			return dt;
		}
	}
}


ClientsSelectData har bara en selectmetod eftersom den bara ska populera en ListBox, inte uppdatera något.

Det som händer när jag kör detta är att allt funkar, men när jag gör uppdateringar så är det inget som uppdateras vilket får mig att misstänka att fel proj_id skickas och inget händer i databasen. Är det någon som vet hur jag ska fixa till detta?

Tack på förhand!
/Thomas


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 169
27 953
271 705
690
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