Tình hình là mình đang làm web bán sách,mình đã viết code như bên dưới và khi bấm vào mua thì bị lỗi "Specified cast is not valid" chỗ giaban = (double)dt.Rows[0]["Gia"];
Và không hiểu sao khi load ra sách nào cũng có tên là "TenSach" ..
pro nào biết sửa giúp mình với đang cần gấp T_T.
Code:
DataTable dt = new DataTable();
    DataSet ds = new DataSet();
    string namesp = "";
    double giaban;
    public string LayTenSach(int masach)
    {
        string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("App_Data//csdl.mdb");
        OleDbConnection Olecon = new OleDbConnection(str);
        Olecon.Open();
        string chuoitruyvan = "select MaSach,TenSach,Gia from Sach where MaSach=" + masach;
        OleDbDataAdapter Oleda = new OleDbDataAdapter(chuoitruyvan, Olecon);
        Oleda.Fill(dt);
        namesp = dt.Rows[0]["TenSach"].ToString();
        return namesp;
    }   
    public double LayGiaSach(int masach)
    {
        string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("App_Data//csdl.mdb");
        OleDbConnection Olecon = new OleDbConnection(str);
        Olecon.Open();
        string chuoitruyvan = "select MaSach,TenSach,Gia from Sach where MaSach=" + masach;
        OleDbDataAdapter Oleda = new OleDbDataAdapter(chuoitruyvan, Olecon);
        Oleda.Fill(dt);
        giaban = (double)dt.Rows[0]["Gia"];       
        return giaban;
    }
    public void HienSach()
    {
        string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("App_Data//csdl.mdb");
        OleDbConnection Olecon = new OleDbConnection(str);
        string chuoitruyvan = "select * from Sach";
        Olecon.Open();
        OleDbDataAdapter Oleda = new OleDbDataAdapter(chuoitruyvan, Olecon);
        Oleda.Fill(ds);
        Sach.DataSource = ds.Tables[0];
        Sach.DataBind();
        Olecon.Close();    
    }
Code:
protected void Sach_ItemCommand(object source, DataListCommandEventArgs e)
    {
bool kt = false;
        string masach = Sach.DataKeys[e.Item.ItemIndex].ToString();
        dt = (DataTable)Session["cart"];   
        string TenSP = LayTenSach(int.Parse(masach)); 
        //s = Convert.ToInt16((e.Item.FindControl("txtsl") as TextBox).Text.ToString());   
        if (dt.Rows.Count != 0)             
        {
            foreach (DataRow dr in dt.Rows)  
            {
                if (dr[0].ToString() == masach) 
                {
                    dr[3] = Convert.ToInt32(dr[3].ToString()) + 1; 
                    dr[4] = Convert.ToInt32(dr[2]) * Convert.ToInt32(dr[3]); 
                    kt = true;  
                }
            }
        }
        if (kt == false)  
        {
             DataRow dr = dt.NewRow(); 
             dr[0] = Convert.ToString(int.Parse(masach));  
             dr[1] = LayTenSach(int.Parse(masach));
             dr[2] = LayGiaSach(int.Parse(masach));
             dr[3] = 1;
             dr[4] = Convert.ToInt32(dr[2]) * Convert.ToInt32(dr[3]);
             dt.Rows.Add(dr);     
             Session["cart"] = dt;
             DataTable dt1 = new DataTable();
             dt1 = (DataTable)Session["cart"];
             GridView1.DataSource = dt1;
             GridView1.DataBind();
        }
}
Code:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            HienSach();
        }
       
    }