Toon posts:

[asp.net]Specified cast is not valid.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Bij het verwijderen van een row in me datagrid krijg ik de volgende error:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Server Error in '/' Application.
--------------------------------------------------------------------------------

Specified cast is not valid. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidCastException: Specified cast is not valid.

Source Error: 


Line 119:       private void DataGrid_Delete(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
Line 120:       {
Line 121:           string keyValue = (string)DGNieuws.DataKeys[e.Item.ItemIndex];
Line 122:           string SQL = "DELETE FROM nieuws WHERE ID=" + keyValue;
Line 123:



Dit is de code wanneer er op de delete knop wordt gedrukt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void DataGrid_Delete(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            string keyValue = (string)DGNieuws.DataKeys[e.Item.ItemIndex];
            string SQL = "DELETE FROM nieuws WHERE ID=" + keyValue;
            

            SqlConnection myConnection = new SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\bin\\marquette.mdb");
            SqlCommand DeleteCommand = new SqlCommand(SQL, myConnection);

            myConnection.Open();
            DeleteCommand.ExecuteNonQuery();
            myConnection.Close();

            DGNieuws.CurrentPageIndex = 0;
            DGNieuws.EditItemIndex = -1;
            DataBind();
            

        }



Weet iemand hoe ik het zo kan laten werken dat ik een row kan verwijderen uit mn datagrid?

Verwijderd

Probeer eens
string SQL = "DELETE FROM nieuws WHERE ID=" & keyValue;

Even uit het hoofd hoor. Dit is de VB methode (die & dus), weet dus niet of het ook werkt voor C. Je kan ook een StringBuilder gebruiken. MS raadt dat ook aan geloof ik want het zou sneller gaan.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Wat zit er in de DataKeys? Is dat een numerieke waarde, of een alfanumerieke waarde?

Ik vermoed dat het een numerieke is, die je cast naar een string. Je kan dan evengoed de ToString() method gebruiken.

Verder: waarom maak je geen gebruik van parametrized queries?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Verwijderd schreef op 27 August 2003 @ 13:32:
Even uit het hoofd hoor. Dit is de VB methode (die & dus), weet dus niet of het ook werkt voor C. Je kan ook een StringBuilder gebruiken. MS raadt dat ook aan geloof ik want het zou sneller gaan.
VB.NET is geen VB, en C# is ook geen VB.

In C# gebruik je + als string concatenation operator. Het is niet omdat in taal A dit de preferred manier is, dat het daarom ook in andere talen zo is.
& is in C, C# zelfs geen string-concat operator.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Verwijderd schreef op 27 augustus 2003 @ 13:32:
Probeer eens
string SQL = "DELETE FROM nieuws WHERE ID=" & keyValue;
deze kent hij inderdaad niet

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
FLoorcore,
misschien is het handig als je eens leert hoe je moet debuggen.
Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to
remove errors, but the meaning that really matters is to see into the execution of a program by examining
it. A programmer that cannot debug effectively is blind.
Eigenlijk zou ik dit topic zo dicht kunnen gooien, aangezien je blijkbaar zelf nog niet eens de moeite gedan hebt om dit probleem op te lossen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 27 August 2003 @ 13:34:
Wat zit er in de DataKeys? Is dat een numerieke waarde, of een alfanumerieke waarde?
Ik vermoed dat het een numerieke is, die je cast naar een string. Je kan dan evengoed de ToString() method gebruiken.
Dit haal ik op in me pageload:

code:
1
2
3
4
5
6
7
8
9
10
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\bin\\marquette.mdb"; 
OleDbConnection myConnection = new OleDbConnection(); 
myConnection.ConnectionString = connString;// create a data adapter 
OleDbDataAdapter da = new OleDbDataAdapter("Select ID, datum, nieuws from nieuws order by datum DESC", myConnection);
// create a new dataset 
DataSet ds = new DataSet(); 
// fill dataset 
da.Fill(ds, "nieuws");// write dataset contents to an xml file by calling WriteXml method
DGNieuws.DataSource = ds;
DGNieuws.DataBind();


In me properties van datagrid heb ik als DataKeyField "ID" meegegeven

Verwijderd

Topicstarter
whoami schreef op 27 August 2003 @ 13:38:
FLoorcore,
misschien is het handig als je eens leert hoe je moet debuggen.
[...]
Eigenlijk zou ik dit topic zo dicht kunnen gooien, aangezien je blijkbaar zelf nog niet eens de moeite gedan hebt om dit probleem op te lossen.
True... maar ja ook voor beginners kan het wel eens lastig zijn....

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Verwijderd schreef op 27 August 2003 @ 13:42:
[...]


True... maar ja ook voor beginners kan het wel eens lastig zijn....
De Quickstart lezen en je topicstart daar aan laten conformeren?
Zelf eens door je code stappen?

Dat is allemaal niet lastig.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Je moet eens dit proberen:

code:
1
string test = (string)5;


en dit:
code:
1
string test2 = 5.ToString();


Jij cast, terwijl je zou moeten converten.

Daarnaast is het toch aangeraden om eens naar parametrized queries te kijken:

code:
1
2
3
4
sSQL = "select * from tabel where ID = @p_id";
Command1.CommandText = sSQL;
Command1.Parameters.Add ("@p_id", ....);
....

[ Voor 52% gewijzigd door whoami op 27-08-2003 13:55 ]

https://fgheysels.github.io/

Pagina: 1