17 messaggi dal 11 novembre 2014
buonasera a tutti.. spero che qualcuno mi possa dare una mano.. io e' una giornata che ci lavoro su e non riesco a venirne a capo, quindi chiedo gentilmente se c'e' qualcuno che mi possa dare un amano per favore , ho il seguente codice

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OracleClient;
using System.Configuration;
using System.Drawing;

namespace Logistica.DPI
{
public partial class assegnaDPI : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == null)
Response.Redirect("~/Account/Login.aspx?msg=Sessione Scaduta. Ripetere il Login!");
if (!IsPostBack)
{
ddlqualifica.DataSource = ManagerUser.getQualifiche(0, "", "nome", "asc");
ddlqualifica.DataTextField = "nome";
ddlqualifica.DataValueField = "nome";
ddlqualifica.DataBind();
ddlqualifica.Items.Insert(0, new ListItem("", ""));
ddlqualifica.Items.Insert(1, "Altro");
ddlqualifica.Items.Insert(2, "Coperta");
ddlqualifica.Items.Insert(3, "Macchina");
DataTable dt = ManagerUser.GetAllUser(0, txtcognome.Text, txtnome.Text, txtmatricola.Text, txtmercantile.Text, ddlqualifica.SelectedValue, "", "", "", "", "", "", "", "", "", (Session["tipodpi"].ToString().Equals("1") ? "1" : ""), "", (Session["tipodpi"].ToString().Equals("2") ? "1" : ""), (Session["tipodpi"].ToString().Equals("3") ? "1" : ""),"","", "cognome", "asc");
for (int i = 0; i < dt.Rows.Count; i++)
{
ddlutenti.Items.Add(new ListItem(dt.Rows[i]["cognome"] + " " + dt.Rows[i]["nome"] + "-" + dt.Rows[i]["matricola"] + " " + dt.Rows[i]["qualifica"], dt.Rows[i]["id_utente"].ToString()));
}
ddlutenti.Items.Insert(0, new ListItem("", ""));
if (!Session["dpi"].ToString().Equals("2") && !Session["mdpimes"].ToString().Equals("1") && !Session["mdpivsg"].ToString().Equals("1"))
Bassegna.Enabled = false;
}
}

protected void Button1_Click(object sender, EventArgs e)
{
lblsezione.Visible = false;
lblsezionevalore.Visible = false;
lblqualifica.Visible = false;
lblaualificavalore.Visible = false;
lblerror.Visible = false;
griglia.Visible = false;
Bassegna.Visible = false;
ddlutenti.Items.Clear();
DataTable dt = ManagerUser.GetAllUser(0, txtcognome.Text, txtnome.Text, txtmatricola.Text, txtmercantile.Text, ddlqualifica.SelectedValue, "", "", "", "", "", "", "", "", "", (Session["tipodpi"].ToString().Equals("1") ? "1" : ""), "",(Session["tipodpi"].ToString().Equals("2")?"1":""),(Session["tipodpi"].ToString().Equals("3")?"1":""),"","", "cognome", "asc");
for (int i = 0; i < dt.Rows.Count; i++)
{
ddlutenti.Items.Add(new ListItem(dt.Rows[i]["cognome"] + " " + dt.Rows[i]["nome"] + "-" + dt.Rows[i]["matricola"] + " " + dt.Rows[i]["qualifica"], dt.Rows[i]["id_utente"].ToString()));
}
ddlutenti.Items.Insert(0, new ListItem("", ""));
}

protected void ddlutenti_SelectedIndexChanged(object sender, EventArgs e)
{
lblsezione.Visible = true;
lblsezionevalore.Visible = true;
lblqualifica.Visible = true;
lblaualificavalore.Visible = true;
lblerror.Visible = false;
int id = 0;
try
{
id = Convert.ToInt32(ddlutenti.SelectedValue);
}
catch (Exception)
{ }
DataTable dt = ManagerUser.GetAllUser(id, txtcognome.Text, txtnome.Text, txtmatricola.Text, txtmercantile.Text, ddlqualifica.SelectedValue, "", "", "", "", "", "", "", "", "", (Session["tipodpi"].ToString().Equals("1") ? "1" : ""), "", (Session["tipodpi"].ToString().Equals("2") ? "1" : ""), (Session["tipodpi"].ToString().Equals("3") ? "1" : ""),"","", "cognome", "asc");
lblaualificavalore.Text = dt.Rows[0]["qualifica"].ToString();
lblsezionevalore.Text = dt.Rows[0]["sezione"].ToString();
Translate tt = new Translate();
griglia.Columns[0].HeaderText = tt.TranslateTXT("//Resource/item[@name='cnome']");
griglia.Columns[1].HeaderText = tt.TranslateTXT("//Resource/item[@name='misura']");
griglia.Columns[2].HeaderText = tt.TranslateTXT("//Resource/item[@name='partecorpo']");
griglia.Columns[3].HeaderText = tt.TranslateTXT("//Resource/item[@name='quantita']");
griglia.Columns[4].HeaderText = tt.TranslateTXT("//Resource/item[@name='dataconsegna']");
griglia.Columns[5].HeaderText = tt.TranslateTXT("//Resource/item[@name='datascadenza']");
griglia.Columns[6].HeaderText = tt.TranslateTXT("//Resource/item[@name='destinatari']");
griglia.DataSource = ManagerDPI.getDPISpettanti(dt.Rows[0]["sezione"].ToString(), dt.Rows[0]["qualifica"].ToString(),Session["tipodpi"].ToString());
griglia.DataBind();


griglia.Visible = true;
Bassegna.Visible = true;
Bassegna.Enabled = true;
}

protected void griglia_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("ddlmisura");
DataTable dt = ManagerDPI.getDPIinMagazzino(0, Convert.ToInt32(griglia.DataKeys[e.Row.RowIndex].Value), "", "",Session["tipodpi"].ToString(), "descrizione", "asc");
for (int i = 0; i < dt.Rows.Count; i++)
{
if (Convert.ToInt32(dt.Rows[i]["quantita"].ToString()) > 0)
ddl.Items.Add(new ListItem(dt.Rows[i]["descrizione"].ToString(), dt.Rows[i]["id"].ToString()));
}
if (ddl.Items.Count > 0)
{
ddl.Items.Insert(0, new ListItem("", ""));
ddl.Enabled = true;
TextBox tb = (TextBox)e.Row.FindControl("txtdataconsegna");
tb.Enabled = true;
tb.Text = DateTime.Now.ToString("dd/MM/yyyy");
tb = (TextBox)e.Row.FindControl("txtdatascadenza");
tb.Enabled = true;
tb = (TextBox)e.Row.FindControl("txtquantita");
tb.Enabled = true;
}
else
{
ddl.Items.Insert(0, new ListItem("N/A", ""));
ddl.Enabled = false;
TextBox tb = (TextBox)e.Row.FindControl("txtdataconsegna");
tb.Enabled = false;
tb = (TextBox)e.Row.FindControl("txtdatascadenza");
tb.Enabled = false;
tb = (TextBox)e.Row.FindControl("txtquantita");
tb.Enabled = false;
}
}
}

protected void Bassegna_Click(object sender, EventArgs e)
{
bool esito = false;
OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
connection.Open();
OracleTransaction tran = connection.BeginTransaction();
esito = ManagerDPI.aggiornaDPIcorrenti(connection, tran, Convert.ToInt32(ddlutenti.SelectedValue));
if (esito)
{
int contatore = 0;
for (int i = 0; i < griglia.Rows.Count; i++)
{
DropDownList ddl = (DropDownList)griglia.Rows[i].FindControl("ddlmisura");
TextBox quantita = (TextBox)griglia.Rows[i].FindControl("txtquantita");
TextBox data_consegna = (TextBox)griglia.Rows[i].FindControl("txtdataconsegna");
TextBox data_scadenza = (TextBox)griglia.Rows[i].FindControl("txtdatascadenza");
if (ddl.Enabled && ddl.SelectedIndex>0)
{
if (!quantita.Text.Equals("0"))
{
esito = ManagerDPI.assegnaDPI(connection, tran, Convert.ToInt32(ddlutenti.SelectedValue), Convert.ToInt32(griglia.DataKeys[i].Value), Convert.ToInt32(ddl.SelectedValue), "", data_consegna.Text, data_scadenza.Text, Convert.ToInt32(quantita.Text));
if (!esito)
{
Llblerror.Key= "erroreassegnadpi";
lblerror.ForeColor = Color.Red;
lblerror.Visible = true;
tran.Rollback();
connection.Close();
return;
}
contatore++;
}
}

}
if (contatore > 0)
{
Llblerror.Key = "assegnazionedpi";
lblerror.ForeColor = Color.Green;
lblerror.Visible = true;
tran.Commit();
connection.Close();
OpenNewWindow("PDFReportDPIUtente.aspx?id_utente=" + ddlutenti.SelectedValue + "&corrente=1&dal=&al=&dal1=&al1=&sortExp=&sortDir=");
Bassegna.Enabled = false;
}
else
{
Llblerror.Key = "nodpiselected";
lblerror.ForeColor = Color.Red;
lblerror.Visible = true;
tran.Rollback();
connection.Close();
}
}
else
{
Llblerror.Key = "erroreassegnadpi";
lblerror.ForeColor = Color.Red;
lblerror.Visible = true;
tran.Rollback();
connection.Close();
}
}
public void OpenNewWindow(string url)
{
ClientScript.RegisterStartupScript(this.GetType(), "newWindow", String.Format("<script>window.open('{0}');</script>", url));
}

}
}

non capisco cosa c'e' di sbagliato , per favore vi chiedo una mano
Response.Redirect("~/Account/Login.aspx?msg=Sessione Scaduta. Ripetere il Login!");

No!
Response.Redirect("~/Account/Login.aspx?msg=" + Server.UrlEncode("Sessione Scaduta. Ripetere il Login!"));

E comunque passare i messaggi in url è molto brutto. Passa un parametro e nella pagina Login.aspx sai che il parametro=1 corrisponde a quel messaggio.
A parte questo, che errore ti dà?

PS - puoi postare solo il codice strettamente necessario al problema? :)

Ormai programmano tutti... ma la professionalità appartiene a pochi
17 messaggi dal 11 novembre 2014
intantograzie 1000 per la risposta, l'errore che mi da e' questo :

Object reference not set to an instance of an object.
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.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[NullReferenceException: Object reference not set to an instance of an object.]
Logistica.DPI.assegnaDPI.ddlutenti_SelectedIndexChanged(Object sender, EventArgs e) +2121
System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +118
System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent() +143
System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +10
System.Web.UI.Page.RaiseChangedEvents() +134
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5201


sai come aiutarmi per favore?
Cosa c'è alla riga 2121?
Cmq penso che il problema sia un valore null nel db. Quando usi il datareader devi sempre controllare che il valore non sia nullo prima di fare tostring

Ormai programmano tutti... ma la professionalità appartiene a pochi
17 messaggi dal 11 novembre 2014
come faccio a vedere qual'e' il valore null che da questi problemi?
17 messaggi dal 11 novembre 2014
Allora, ho 3 tabelle in una ho valori compresi tra 0 e 1.. Una dove ho delle date .. E una completamente vuota.. È possibile che l errore di NULL sia generata da questo ultima?
Effettivamente la riga 2121 potrebbe essere dell'assembly. Il problema è in ddlutenti_SelectedIndexChanged


Non puoi scrivere:
dt.Rows[0]["qualifica"].ToString();


Se dt.Rows[0]["qualifica"] è nullo, rilancia un'eccezione.
Scrivi sempre

if(reader[columnName]!= DBNull.Value)
...

Modificato da manuel0081 il 03 dicembre 2015 09.06 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
17 messaggi dal 11 novembre 2014
Quindi scrivo questa istruzione prima dell array? Cosi come me l hai scritta tu?

Cmq ti ringrazio anticipatamente per quello che stai facendo per me

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.