Ich möchte die GridView lesen Sitzung Variablen-ID, aber ich habe Fehler, dass zum Konvertieren von Datentyp wie , aber ich habe nicht Nvarchar Wert in meinem Datenbanktabelle ist bereits int. Wie kann ich es reparieren?
finalProject.Userasp.net Konvertierung fehlgeschlagen beim Konvertieren der Nvarchar-Wert in den Datentyp int Sitzung
public class User
{
public int Id { get; set; }
public string name { get; set; }
public string surname { get; set; }
public string email { get; set; }
}
Benutzerobjekt
User u = new User();
u.Id = Convert.ToInt32(dr["Id"]);
u.name = dr["name"] != DBNull.Value ? dr["name"].ToString() : string.Empty;
u.surname = dr["surname"] != DBNull.Value ? dr["surname"].ToString() : string.Empty;
u.email = dr["email"] != DBNull.Value ? dr["email"].ToString() : string.Empty;
Session["user"] = u;
Meine Codes
public partial class MyConferences : System.Web.UI.Page
{
internal User user;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
object user = Session["user"];
if(user != null)
{
user = Session["user"] as User;
}
string constr = ConfigurationManager.ConnectionStrings[0].ConnectionString;
using(SqlConnection con = new SqlConnection(constr))
{
string query = "select Conferences.conferenceName , Conferences.conferenceDate , Conferences.conferencePlace , Conferences.category from Conferences inner join Users on Conferences.fk_Users = Users.Id where Users.Id = @UserId";
using(SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
Convert.ToInt32(Session["UserId"]);
SqlParameter prm = cmd.Parameters.AddWithValue("@UserId", user.ToString());
if(user == null)
{
prm.Value = DBNull.Value;
}
con.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
con.Close();
}
}
}
}
Fehler
Wenn ich die ToString() Methoden jetzt entfernen, habe ich Fehler, der ist "Eine Ausnahme vom Typ 'System.ArgumentException' in System.Data.dll aufgetreten ist, aber nicht im Benutzercode behandelt wurde" und "Keine Zuordnung existiert vom Objekttyp zu einem bekannten verwalteten Anbieter nativen Typ " – user5695111
Ersetzen Sie user.ToString() mit Convert.TOInt32 (Sitzung [" UserId "]) und sehen, ob das funktioniert. Sie müssen eine Ganzzahl übergeben, oder Sie könnten user.Id anstelle von user.ToString() versuchen –
Es funktioniert einwandfrei, aber ich habe nicht das gewünschte Ergebnis erhalten. Nichts ist passiert . Es sollte in der Gridview sein, ich verstehe nicht warum? – user5695111