19 messaggi dal 29 dicembre 2003
Ciao a tutti!
Ho un problema su un passaggio di parametri, questo è il mio codice:

public partial class dettagente : System.Web.UI.Page
{
public class Agente
{
public Agente()
{
//
// TODO: aggiungere qui la logica del costruttore
//
}
private string _Nome;

public string Nome
{
get
{
return _Nome;
}
set
{
_Nome = value;
}
}
}

protected void Page_Load(object sender, System.EventArgs e)
{
string _agente2;
_agente2 = Request.QueryString.Get("agente");
Response.Write(_agente2);

Agente agente = new Agente();
agente.Nome = _agente2;

//myConnection = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Server.MapPath("database/utenti.mdb"));
if (!IsPostBack)
BindGrid("id",agente.Nome);
}
protected void MyDataGrid_Sort(Object sender, DataGridSortCommandEventArgs e)
{
//BindGrid(e.SortExpression, agente.Nome);
}
public void BindGrid(String sortfield,String Nome)
{
using (SqlConnection _Connection = new SqlConnection())
{
_Connection.ConnectionString = WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlCommand _command = _Connection.CreateCommand())
{

SqlParameter _NomeParameter = new SqlParameter("@operatore", System.Data.SqlDbType.VarChar);
_NomeParameter.Value = Nome;
_command.Parameters.Add(_NomeParameter);

SqlConnection objConn = new SqlConnection();
objConn.ConnectionString = "server=xyz;User id=xyz;password=xyz;database=xyz";

objConn.Open();
SqlDataAdapter objAdapter = new SqlDataAdapter("Select * from w_ordinit where operatore = '@operatore'", objConn);

....

Voglio caricare un datagrid con sorting iniziale by ID, però come vedete quando richiamo il metodo BindGrid() passo sia ID che un nome (valore che ricevo in entrata) che mi servirà per l'objAdapter.
Il mio problema è che ricevo quest'errore:
"Riferimento a un oggetto non impostato su un'istanza di oggetto."
Dettagli eccezione: System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.

Help me pls....
Grazie in anticipo!
Beh sarebbe più utile sapere in che punto ti dà quell'errore e se _agente2 è valorizzando, magari debuggando.

Ciao

Il mio blog
Homepage
19 messaggi dal 29 dicembre 2003
Ok grazie innanzitutto per la celere risposta...

Nella schermata dell'errore non mi specifica la riga però nell'analisi dello stack ho questo:

[NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.]
dettagente.BindGrid(String sortfield, String Nome) +66
dettagente.Page_Load(Object sender, EventArgs e) +101
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436

Invece per debuggare ho un problema, i sorgenti si trovano su un server esterno, quando lancio il debug mi si pianta VS, c'è un modo per far partire il debug direttamente sul client?

Scusate la niubbaggine...
Resta comunque difficile capire. Sarebbe molto più semplici se lo provassi sulla tua stessa macchina, non sul server.
Gli unici punti che possono dare errore sono nel MyConnectionString che potrebbe non esistere e te interroghi la proprietà ConnectionString. Non c'entra il parametro perché al massimo lo valorizzi a null.

Ciao

Il mio blog
Homepage
19 messaggi dal 29 dicembre 2003
GRANDE!

Ho risolto così:

protected void Page_Load(object sender, System.EventArgs e)
{
string _agente2;
_agente2 = Request.QueryString.Get("agente");
Response.Write(_agente2);

Agente agente = new Agente();
agente.Nome = _agente2;

if (!IsPostBack)
BindGrid("id",agente.Nome);
}
protected void MyDataGrid_Sort(Object sender, DataGridSortCommandEventArgs e)
{
//BindGrid(e.SortExpression, agente.Nome);
}
public void BindGrid(String sortfield,String Nome)
{
using (SqlConnection objConn = new SqlConnection())
{
objConn.ConnectionString = "server=xyz;User id=xyz;password=xyzdatabase=xyz";
using (SqlCommand _command = objConn.CreateCommand())
{

SqlParameter _NomeParameter = new SqlParameter("@operatore", System.Data.SqlDbType.VarChar);
_NomeParameter.Value = Nome;
_command.Parameters.Add(_NomeParameter);

objConn.Open();
SqlDataAdapter objAdapter = new SqlDataAdapter("Select * from w_ordinit where operatore = '@operatore'", objConn);

try
{
DataSet ds = new DataSet();
objAdapter.Fill(ds, "w_ordinit");
DataView Source = ds.Tables["w_ordinit"].DefaultView;
MyDataGrid.DataSource = Source;
MyDataGrid.DataBind();
}
finally
{
objConn.Close();
}

}
}

...

Però un'ultimo problema...mi carica il datagrid vuoto...come se non sentisse il parametro...dove sbaglio?
Grazie...
Mi sa che devi dare la dimensione al parametro @operatore

Ciao

Il mio blog
Homepage
Ciao,

correggi con:

using (SqlCommand _command = objConn.CreateCommand())
{
_command.CommandText = "Select * from w_ordinit where operatore = @operatore";
SqlParameter _NomeParameter = new SqlParameter("@operatore", System.Data.SqlDbType.VarChar);
_NomeParameter.Value = Nome;
_command.Parameters.Add(_NomeParameter);

objConn.Open();
SqlDataAdapter objAdapter = new SqlDataAdapter(_command);
Ah ops, non ho visto che non usavi il command con i parametri associati, sorry

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.