Bryan
Bryan

Reputation: 8697

Duplicate values while using confirmbuttonextender on dropdownlist

I have a dropdownlist. I have added a default value into a dropdownlist box with this codes

<asp:DropDownList ID="DDLCase" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DDLCase_SelectedIndexChanged" AppendDataBoundItems="true" >
<asp:ListItem Value="">Select Member Report ID</asp:ListItem>
</asp:DropDownList>

For example i have DB value such as 123, 1234.

When i run my webform and clicked 123 and 1234 nothing happened. However when i went to click the ListItem Value they gave me some error

Conversion failed when converting the varchar value 'Select Member Report ID' to data type int.

This is my back-end code for my DDL at my pageload.

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {

            SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security = SSPI");

            SqlCommand cm = new SqlCommand("Select pr.policereportid from PoliceReport pr, AdminOfficialReport aor, MemberReport mr where pr.memberreportid=mr.memberreportid and mr.caseprogress='settled' and aor.officialreport IS NULL", con);
            con.Open();
            SqlDataReader dr;
            dr = cm.ExecuteReader();
            while (dr.Read())
            {
                DDLCase.Items.Add(dr["policereportid"].ToString());
            }
            DDLCase.Items.Insert(0, new ListItem("Select Member Report ID", "-1"));

            dr.Close();
            con.Close();
        }
    }

This is where my error occurs. It occurs at the area around dr = cm.ExecuteReader();

protected void DDLCase_SelectedIndexChanged(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security = SSPI");
        con.Open();
        SqlCommand cm = new SqlCommand("Select lro.fullname, lro.contact, mr.typeofcrime, mr.location,mr.crdatetime, pr.policeid, pr.prdatetime, pr.policereport, pr.image1, mr.citizenreport from MemberReport mr, PoliceReport pr, LoginRegisterOthers lro where pr.policereportid = '" + DDLCase.SelectedItem.Text + "' and mr.memberreportid=pr.memberreportid and lro.username=mr.username and mr.caseprogress='settled'", con);
        SqlDataReader dr;
        dr = cm.ExecuteReader();
        if (dr.Read())
        {
            lblFullName.Text = dr["fullname"].ToString();
            lblContact.Text = dr["contact"].ToString();
            lblTOC.Text = dr["typeofcrime"].ToString();
            lblLocation.Text = dr["location"].ToString();
            lblCRDT.Text = dr["crdatetime"].ToString();
            lblPicture.Text = dr["image1"].ToString();
            lblAssign.Text = dr["policeid"].ToString();
            lblPRDT.Text = dr["prdatetime"].ToString();
            lblCR.Text = dr["citizenreport"].ToString();
            lblPR.Text = dr["policereport"].ToString();
        }

        con.Close();

    }

How do i solve this?

Upvotes: 1

Views: 326

Answers (2)

Kamran Ajmal
Kamran Ajmal

Reputation: 302

Remove <asp:ListItem Value="">Select Member Report ID</asp:ListItem> this line of code from your markup. after binding your DDL just write this line

DDLID.items.insert(0,listboxitem("Select Member Report ID","-1"));

Now make your code as look like

int index =1; while (dr.Read()) { if(index == 1) { DDLCase.Items.Insert(0, new ListItem("Select Member Report ID", "-1"));

} else { DDLCase.Items.Add(new ListItem(dr["dataId"].toString(), index)); } index++;

}

Upvotes: 1

Baz1nga
Baz1nga

Reputation: 15579

cos its expecting a value of type int and in the case of the default there is no value set and thus it is picking up the text in the option field i.e Select Member Report ID

Change it to:

<asp:ListItem Value="-1">Select Member Report ID</asp:ListItem>

and deal with the negative value appropriately in your code behind/javascript

use SelectedValue and not Text!

SqlCommand cm = new SqlCommand("Select lro.fullname, lro.contact, mr.typeofcrime, mr.location,mr.crdatetime, 
pr.policeid, pr.prdatetime, pr.policereport, pr.image1, mr.citizenreport from MemberReport mr, PoliceReport pr, 
LoginRegisterOthers lro where pr.policereportid = '" + DDLCase.SelectedValue + "' and 
mr.memberreportid=pr.memberreportid and lro.username=mr.username and mr.caseprogress='settled'", con);

Upvotes: 3

Related Questions