how to display image from database to image control in asp.net - asp.net

i want to retrieve image from database but this code did not display any thing.
image data type in database is image.I dont know what is wrong with this code
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["pro_ID"]);
int id = Convert.ToInt32(Session["pro_id"]);
SqlConnection conn = new SqlConnection("Data source=DESKTOP-QPTTS3M;initial catalog=shopolic;integrated security=True;");
conn.Open();
SqlCommand cmd = new SqlCommand("spgetimage", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter() { ParameterName = "#id", Value = Session["pro_id"] };
cmd.Parameters.Add(param);
//cmd.ExecuteScalar();
SqlCommand cmd2 = new SqlCommand("select *from product where product_ID='" + Session["pro_id"] + "'", conn);
// cmd2.ExecuteNonQuery();
SqlDataReader dr = cmd2.ExecuteReader();
if (dr.Read())
{
name.Text = dr["name"].ToString();
byte[] img = (byte[])(dr["image"]);
if (img == null)
{
Image1.ImageUrl = "~/Images/bg.png";
}
else
{
string base64String = Convert.ToBase64String(img);
Image1.ImageUrl = String.Format("data:image/jpg;base64,{0}", base64String);
// MemoryStream ms = new MemoryStream(img);
}
}
// byte[] bytes = (byte[])cmd.ExecuteScalar();
// string strbase64 = Convert.ToBase64String(bytes);
//Image1.ImageUrl = "data:Image/png;base64,"+strbase64;
//SqlDataReader dr = cmd.ExecuteReader();
//DataTable DT = new DataTable();
conn.Close();
}

Related

How to use local variable of Page_OnLoad method in OnClick event in asp.net C#

I am designing a website in which I need to update a table Company in my database through CompanyDetails page with respect to the auto increment field CompanyID which is being passed through Query string from previous page named Company and only one button is there for insert and update. So my problem is I am unable to get the value of Companyid of Page_OnLoad event in SaveButtonClick event.
Note: I have already tried Session and View state, IsPostBack but in Onclick event even their value are not being maintained and are updated to 0 or null.
Here is my code......(Please ignore my coding mistakes)
using System;
using System.Web.UI;
using System.Data;
using System.Data.SqlClient;
public partial class CompanyDetails : System.Web.UI.Page
{
int Companyid = 0;
string cmdName = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Companyid = Convert.ToInt32(Request.QueryString["CompanyID"]);
cmdName = Request.QueryString["CommandType"];
Session["something"] = Companyid;
}
if (cmdName == "Details")
{
BindTextBoxvalues();
}
}
protected void SaveButton_Click(object sender, EventArgs e)
{
string x = Session["something"].ToString();
try
{
if (SaveButton.Text == "Save")
{
SqlCommand cmd = new SqlCommand();
String mycon = "Data Source=.; Initial Catalog=something; Integrated Security=True";
SqlConnection con = new SqlConnection(mycon);
cmd = new SqlCommand("spInsertCompany", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("#CompanyName", SqlDbType.VarChar).Value = Name.Text;
cmd.Parameters.Add("#CompanyCode", SqlDbType.VarChar).Value = CompanyCode.Text;
cmd.Parameters.Add("#LegalName", SqlDbType.VarChar).Value = LegalName.Text;
cmd.Parameters.Add("#TaxID", SqlDbType.Int).Value = TaxID.Text;
cmd.Parameters.Add("#BusinessPhone", SqlDbType.VarChar).Value = BusinessPhone.Text;
cmd.Parameters.Add("#Extension", SqlDbType.VarChar).Value = Extension.Text;
cmd.Parameters.Add("#FaxNumber", SqlDbType.VarChar).Value = FaxNumber.Text;
cmd.Parameters.Add("#Description", SqlDbType.VarChar).Value = Description.Value;
bool isstatus = IsActiveCheckBox.Checked;
cmd.Parameters.Add("#Status", SqlDbType.Int).Value = Convert.ToInt32(isstatus);
con.Open();
cmd.Connection = con;
cmd.ExecuteNonQuery();
Response.Write("<script language='javascript'>window.alert('Saved Successfully.');window.location='Company.aspx';</script>");
}
else if (SaveButton.Text == "Update")
{
SqlCommand cmd = new SqlCommand();
String mycon = "Data Source=.; Initial Catalog=something; Integrated Security=True";
SqlConnection con = new SqlConnection(mycon);
con.Open();
cmd = new SqlCommand("spUpdateCompany", con);
cmd.CommandType = CommandType.StoredProcedure;
int a = Convert.ToInt32(Companyid);
// I need the value here but it is being updated to zero here.
cmd.Parameters.Add("#CompanyID", SqlDbType.Int).Value = Companyid;
cmd.Parameters.Add("#CompanyName", SqlDbType.VarChar).Value = Name.Text;
cmd.Parameters.Add("#CompanyCode", SqlDbType.VarChar).Value = CompanyCode.Text;
cmd.Parameters.Add("#BusinessPhone", SqlDbType.VarChar).Value = BusinessPhone.Text;
cmd.Parameters.Add("#Extension", SqlDbType.VarChar).Value = Extension.Text;
cmd.Parameters.Add("#FaxNumber", SqlDbType.VarChar).Value = FaxNumber.Text;
cmd.Parameters.Add("#TaxID", SqlDbType.Int).Value = TaxID.Text;
cmd.Parameters.Add("#LegalName", SqlDbType.VarChar).Value = LegalName.Text;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
Response.Write("<script language='javascript'>window.alert('Updated Successfully.');window.location='Company.aspx';</script>");
}
}
catch (SqlException ex)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "Message",
"alert('Oops!! following error occured : " + ex.Message.ToString() + "');", true);
}
}
protected void CancelButton_Click(object sender, EventArgs e)
{
Response.Redirect("Company.aspx");
}
private void BindTextBoxvalues()
{
SaveButton.Text = "Update";
string constr = "Data Source=.; Initial Catalog=something; Integrated Security=True";
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select * from Company where CompanyID=" + Companyid, con);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
Name.Text = dt.Rows[0][1].ToString();
CompanyCode.Text = dt.Rows[0][2].ToString();
LegalName.Text = dt.Rows[0][15].ToString();
TaxID.Text = dt.Rows[0][14].ToString();
BusinessPhone.Text = dt.Rows[0][3].ToString();
Extension.Text = dt.Rows[0][13].ToString();
FaxNumber.Text = dt.Rows[0][12].ToString();
Description.Value = dt.Rows[0][4].ToString();
IsActiveCheckBox.Checked = Convert.ToBoolean(dt.Rows[0][11]);
}
}
Any values stored in local variables need to be read from Request on every postback.
So do following
int Companyid = 0;
string cmdName = null;
protected void Page_Load(object sender, EventArgs e)
{
Companyid = Convert.ToInt32(Request.QueryString["CompanyID"]);
cmdName = Request.QueryString["CommandType"];
if (!IsPostBack)
{
if (cmdName == "Details")// be sure about string case
{
BindTextBoxvalues();
}
}
}
Or make viewstate properties
If you want to have your property available on the PostBack, do not use !IsPostBack
protected void Page_Load(object sender, EventArgs e)
{
Companyid = Convert.ToInt32(Request.QueryString["CompanyID"]);
}

duplicate items in dropdownlist on an edit page

I have a page to edit user profile.On page load,the data loads on to the page for the given userid.The problem is that the dropdownlists have a duplicate item which is selected.as shown below :
Here is my code:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//btnReset.Visible = false;
BindDisabilityDropDown();
BindGenderDropDown();
BindStateDropDown();
ExtractUserData();
}
}
protected void BindGenderDropDown()
{
string CS = ConfigurationManager.ConnectionStrings["ss"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from tblGenders", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
ddlGender.DataSource = ds;
ddlGender.DataTextField = "GenderName";
ddlGender.DataValueField = "GenderId";
ddlGender.DataBind();
}
ddlGender.Items.Insert(0, new ListItem("---Select---", "0"));
ddlGender.SelectedIndex = 0;
}
private void ExtractUserData()
{
string CS = ConfigurationManager.ConnectionStrings["ss"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("Select * from tblAllUsers where UserId='PL00012'", con);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string path = rdr["ProfilePicPath"].ToString();
hfImagePath.Value = Path.GetFileName(path);
lblUserId.Text = rdr["UserId"].ToString();
txtFName.Text = rdr["FirstName"].ToString();
txtLName.Text = rdr["LastName"].ToString();
txtEmailAddress.Text = rdr["EmailAdd"].ToString();
txtContactNumber.Text = rdr["MobileNo"].ToString();
txtdob.Value = rdr["DOB"].ToString();
txtStreetAddress.Text = rdr["StreetAddress"].ToString();
txtZipCode.Text = rdr["ZipCode"].ToString();
ddlGender.SelectedItem.Text = rdr["Gender"].ToString();
ddlDisabled.SelectedItem.Text = rdr["Disabled"].ToString();
ddlState.SelectedItem.Text = rdr["State"].ToString();
ddlCity.SelectedItem.Text = rdr["City"].ToString();
}
}
What i am guessing is,the dropdownlist is loaded by BindGenderDropDown() and then the SelectedItem is added once again by ExtractData().So how can i just avoid the unwanted addition?
You can do the following while selecting DropdownList SelectedItem in ExtractUserData() method:
ddlGender.SelectedIndex = ddlGender.Items.IndexOf(ddlGender.Items.FindByText(rdr["Gender"].ToString()));
Your code ddlGender.SelectedItem.Text = rdr["Gender"].ToString(); is displaying ---Select--- with rdr["Gender"].ToString(). This code doesn't change the Items but only chooses the item.
it may help you.
if (ddlGender.Items.Contains(ddlGender.Items.FindByText(rdr["Gender"].ToString())))
{
ddlGender.Items.FindByText(rdr["Gender"].ToString()).Selected = true;
}
In your case, ddlGender.SelectedItem.Text = rdr["Gender"].ToString(); is changing text of selected index and so it is changing --Select-- to Your Selected Value.
and for selection of Item in Dropdown, I'd suggest to use below code.
ddlGender.SelectedValue = rdr["GenderId"].ToString();

how to display and update data in textbox of asp.net by using stored procedure?

i want to update user information .so first i want when user click on update button than all the field display with their values in text box so that user can able to edit his profile.
i got an error :Procedure or function 'updatefill' expects parameter '#email', which was not supplied.
please help me out from this error...
Thank you.
public partial class updateuser : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cnstr"].ConnectionString);
SqlCommand cmd;
SqlDataAdapter da;
DataTable dt;
SqlDataReader dr;
string str1="";
protected void Page_Load(object sender, EventArgs e)
{
{
con.Open();
cmd = new SqlCommand("updatefill", con);
cmd.CommandType = CommandType.StoredProcedure;
da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds,"registr");
fname.Text = ds.Tables["registr"].Rows[0]["fname"].ToString();
lname.Text = ds.Tables["registr"].Rows[0]["lname"].ToString();
uid.Text = ds.Tables["registr"].Rows[0]["email"].ToString();
pwd.Text = ds.Tables["registr"].Rows[0]["password"].ToString();
pwd1.Text = ds.Tables["registr"].Rows[0]["confirmpassword"].ToString();
mbl.Text = ds.Tables["registr"].Rows[0]["mobile"].ToString();
con.Close();
}
}
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (RadioButton1.Checked)
{
str1 = "Male";
}
else if (RadioButton2.Checked)
{
str1 = "Female";
}
else
{
str1 = "please select gender";
}
}
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
con.Open();
cmd = new SqlCommand("update_user_details", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("#fname", SqlDbType.VarChar).Value = fname.Text;
cmd.Parameters.Add("#lname", SqlDbType.VarChar).Value = lname.Text;
cmd.Parameters.Add("#email", SqlDbType.VarChar).Value = uid.Text;
cmd.Parameters.Add("#mobile", SqlDbType.VarChar).Value = mbl.Text;
cmd.Parameters.Add("#password", SqlDbType.VarChar).Value = pwd.Text;
cmd.Parameters.Add("#confirmpassword", SqlDbType.VarChar).Value = pwd1.Text;
cmd.Parameters.Add("#gender", str1);
dt = new DataTable();
da = new SqlDataAdapter(cmd);
da.Fill(dt);
int s = Convert.ToInt32(dt.Rows[0][0]);
if (s == 1)
{
errmsg.Text = "Update Successfull";
Response.Redirect("userhome.aspx");
}
else
{
errmsg.Text = "Update Faild";
con.Close();
}
ALTER PROCEDURE [dbo].[updatefill]
#email varchar(50)
AS
BEGIN
select * from registr where email=#email
END
Here is an example using the Reader:
String connStr = ConfigurationManager.ConnectionStrings["DB1"].ConnectionString;
String cmdStr = "SELECT [col2],[col3] FROM [Table1] WHERE [col1]=#col1;";
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(("updatefill", con);
{
cmd.CommandType = C0mmandType.StoredProcedure;
conn.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
fname.Text = rdr[0];
lname.Text = rdr[1]
uid.Text = rdr[2]
pwd.Text = rdr[3]
pwd1.Text = rdr[4];
mbl.Text = rdr[5];
}
}
conn.Close();
cmd.Dispose();
conn.Dispose();
}
}
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}

Unable to select item name in DropDownList on selectedindex_changed event?

Code in Page_Load() event is as follows :-
SqlConnection c = new SqlConnection(conn);
c.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = c;
cmd.CommandText = "select name from Employee1";
SqlDataReader dr = cmd.ExecuteReader();
if (!IsPostBack)
{
while (dr.Read())
{
DropDownList1.Items.Add(dr["name"].ToString());
}
}
Code in DropDownList1_SelectedIndexChanged() event is as follows:-
Label1.Text = DropDownList1.SelectedItem.ToString();
I also tried writing
Label1.Text = DropDownList1.SelectedItem.Text;
Label1.Text = DropDownList1.SelectedItem;
I wan't to use that name in following query
cmd.CommandText = "select salary from Employee1 where name='"
+DropDownList1.SelectedItem.Text+"' ";
Use if !Page.IsPostback to bind the data.
if (!Page.IsPostBack)
{
//bind your dropdown here
SqlConnection c = new SqlConnection(conn);
c.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = c;
cmd.CommandText = "select name from Employee1";
SqlDataReader dr = cmd.ExecuteReader();
if (!IsPostBack)
{
while (dr.Read())
{
DropDownList1.Items.Add(dr["name"].ToString());
}
}
}
bind your DropDownList as below
if (!Page.IsPostBack)
{
DataTable dt= new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter("select name, salary from Employee1", conn);
adapter.Fill(dt);
DropDownList1.DataSource = dt
DropDownList1.DataTextField = "name";
DropDownList1.DataValueField = "salary";
DropDownList1.DataBind();
}
then DropDownList1.SelectedValue give you the salary of selected item, no need to initiate another database call.

multiple select and delete on gridview

when i check the check box it able to loop and get the userid and productname but why not able let me delete?
foreach (GridViewRow row in GridView1.Rows)
{
var check = row.FindControl("chkdelete") as CheckBox;
if (check.Checked)
{
string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(connStr);
var uid = row.FindControl("lbluserid") as Label;
var pid = row.FindControl("lblproductname") as Label;
SqlCommand cmd = new SqlCommand("delete from ProductReview where userID=#id and productid=#pid", con);
cmd.Parameters.AddWithValue("#id", uid.Text);
cmd.Parameters.AddWithValue("#pid", pid.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
can you try the same thing like this.
foreach (GridViewRow row in GridView1.Rows)
{
var check = row.FindControl("chkdelete") as CheckBox;
if (check.Checked)
{
var uid = row.FindControl("lbluserid") as Label;
var pid = row.FindControl("lblproductname") as Label;
DatabaseHelperClass.DoDatabaseOperation(uid.Text.Trim(), pid.Text.Trim());
}
}
Class DatabaseHelperClass
{
Public static void DoDatabaseOperation(string uid , string pid)
{ string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand("delete from ProductReview where userID=#id and productid=#pid", con);
cmd.Parameters.AddWithValue("#id", uid);
cmd.Parameters.AddWithValue("#pid", pid);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}

Resources