I'm trying to retrieve data into labels dynamically. Meaning to say the label will change as i change the DropDownList selected item. Is it possible?
aspx:
<asp:DropDownList ID="ddl_CNo" AutoPostBack="true" runat="server" Height="16px" Width="138px" OnSelectedIndexChanged="ddl_CNo_SelectedIndexChanged" >
</asp:DropDownList>
aspx.cs:
//page load box retrieve
SqlConnection myConnect2 = new SqlConnection(_connStr);
string strCommandText2 = "SELECT Card_Type, Card_Type2, Card_Number, Card_Number2, Name_On_Card, Name_On_Card2, Expired_Date, Expired_Date2 From Card_Details where Card_Id = @Card_Id";
myConnect2.Open();
SqlCommand cmd2 = new SqlCommand(strCommandText2, myConnect2);
cmd2.Parameters.AddWithValue("@Card_Id", 1);
////open connection and retrieve data by calling ExecuteReader
SqlDataReader dr2 = cmd2.ExecuteReader();
if (dr2.Read())
{
string CNo1 = dr2["Card_Number"].ToString();
string CNo2 = dr2["Card_Number2"].ToString();
CNo = new List<string>();
CNo.Add(dr2["Card_Number"].ToString());
CNo.Add(dr2["Card_Number2"].ToString());
ddl_CNo.DataSource = CNo;
ddl_CNo.DataBind();
ddl_CNo.Text = dr2["Card_Number"].ToString();
ddl_CNo.Text = dr2["Card_Number2"].ToString();
Lbl_CardName.Text = dr2["Name_On_Card"].ToString();
Lbl_CardName.Text = dr2["Name_On_Card2"].ToString();
Lbl_CardType.Text = dr2["Card_Type"].ToString();
Lbl_CardType.Text = dr2["Card_Type2"].ToString();
Lbl_EDate.Text = dr2["Expired_Date"].ToString();
Lbl_EDate.Text = dr2["Expired_Date2"].ToString();
}
dr2.Dispose();
dr2.Close();
myConnect2.Close();
if (!IsPostBack)
{
LoadCart();
}
}
DDLSelectedIndexChanged:
protected void ddl_CNo_SelectedIndexChanged(object sender, EventArgs e)
{
{
SqlConnection myConnect2 = new SqlConnection(_connStr);
string strCommandText2 = "SELECT Card_Type, Card_Type2, Card_Number, Card_Number2, Name_On_Card, Name_On_Card2, Expired_Date, Expired_Date2 From Card_Details where Card_Id = @Card_Id";
myConnect2.Open();
SqlCommand cmd2 = new SqlCommand(strCommandText2, myConnect2);
cmd2.Parameters.AddWithValue("@Card_Id", 1);
SqlDataReader dr2 = cmd2.ExecuteReader();
if (dr2.Read())
{
string CNo1 = dr2["Card_Number"].ToString();
string CNo2 = dr2["Card_Number2"].ToString();
CNo = new List<string>();
CNo.Add(dr2["Card_Number"].ToString());
CNo.Add(dr2["Card_Number2"].ToString());
ddl_CNo.DataSource = CNo;
ddl_CNo.DataBind();
if (ddl_CNo.SelectedItem.Equals("Card_Number"))
{
Lbl_CardName.Text = dr2["Name_On_Card"].ToString();
Lbl_CardType.Text = dr2["Card_Type"].ToString();
Lbl_EDate.Text = dr2["Expired_Date"].ToString();
}
else if (ddl_CNo.SelectedItem.Equals("Card_Number2"))
{
Lbl_CardName.Text = dr2["Name_On_Card2"].ToString();
Lbl_CardType.Text = dr2["Card_Type2"].ToString();
Lbl_EDate.Text = dr2["Expired_Date2"].ToString();
}
dr2.Dispose();
dr2.Close();
myConnect2.Close();
}
}
}
I'm really new to all these, any help is greatly appreciated :)
After Considering your scenario I thought it will be the solution that will work. Bind your DropDownList once inside Page load then onselctedIndexChanged we can fetch the data on the basis of CardID selected and bind with all label that need data.You could optimize the code according to your specification. Try it once:
string _connStr =ConfigurationManager.ConnectionStrings[""].ConnectionString;
string query = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
query = "SELECT Card_ID,Card_Name From Card_Details"; // Do Change your query according to your requirment
DataTable drpdt = SelectedBindValue(query);
if (drpdt.Rows.Count > 0)
{
drp.DataSource = drpdt;
drp.DataTextField = "Card_Name";
drp.DataValueField = "Card_ID";
drp.DataBind();
}
}
}
protected void Unnamed_SelectedIndexChanged(object sender, EventArgs e)
{
string cardId = drp.SelectedValue;
query = String.Format("SELECT Card_Type, Card_Type2, Card_Number, Card_Number2, Name_On_Card, Name_On_Card2, Expired_Date, Expired_Date2 From Card_Details where Card_Id = {0}",cardId);
DataTable lablebind = SelectedBindValue(query);
if (lablebind.Rows.Count>0)
{
Lbl_CardName.Text = lablebind.Rows[0]["Name_On_Card"].ToString(); // considering there is only one row
Lbl_CardType.Text = lablebind.Rows[0]["Card_Type"].ToString();// considering there is only one row
Lbl_EDate.Text = lablebind.Rows[0]["Expired_Date"].ToString();// considering there is only one row
}
}
protected DataTable SelectedBindValue(string query)
{
using(SqlConnection myConnect2 = new SqlConnection(_connStr))
{
using(SqlDataAdapter sqd = new SqlDataAdapter(query,myConnect2))
{
using (DataTable dt = new DataTable())
{
sqd.Fill(dt);
return dt;
}
}
}
}