Domanda

2 questions for everybody.

1) How can I order the years by their value, it crashes when I use DESC?

2) If I populate my list like so:

 string strConn = ConfigurationManager.ConnectionStrings["rde_410978ConnectionString"].ToString();
    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "Select Distinct Year from MonthlySales DESC"; //DESC DOESNT WORK?

    DataSet objDs = new DataSet();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.SelectCommand = cmd;
    con.Open();
    dAdapter.Fill(objDs);
    con.Close();

    if (objDs.Tables[0].Rows.Count > 0)
    {
        ddItems.DataSource = objDs.Tables[0];
        ddItems.DataTextField = "Year";
        ddItems.DataValueField = "Year";
        ddItems.DataBind();
        ddItems.Items.Insert(0, "Select");
    }

How can I make the year selected appear under ddItems.SelectedItem?

WHERE Year = " + ddItems.SelectedItem + "GROUP BY Name ";

That part of another query doesn't work when I populate my list dynamically, any reasons why/ how can I fix it.

Regards.

EDIT: To make my second question clearer, after debugging its always selecting the top item in the drop down list not the actual selected item?

È stato utile?

Soluzione

First, in your sql you are missing "order by"...use this

"Select Distinct Year from MonthlySales order by Year DESC"

Second, you need to make use of the SelectedValue property to get your dropdown's selected value...as below...

WHERE Year = " + ddItems.SelectedValue + " GROUP BY Name";

Having said that, I strongly recommend you to use..."parameterized" sql...Here is an example on how you could enable parameterized sql query... Give me parameterized SQL, or give me death

Update:

Looks like you are binding your dropdown on every post back...you may try this...

if (!Page.IsPostBack && objDs.Tables[0].Rows.Count > 0)
    {
        ddItems.DataSource = objDs.Tables[0];
        ddItems.DataTextField = "Year";
        ddItems.DataValueField = "Year";
        ddItems.DataBind();
        ddItems.Items.Insert(0, "Select");
    }

Altri suggerimenti

Ans 1)

cmd.CommandText = "Select Distinct Year from MonthlySales ORDER BY 1 DESC"

You are missing order by. Here it is.

"Select Distinct Year from MonthlySales order by Year DESC";

For your second part you can do this. Please mind the space in " GROUP BY Name"

WHERE Year = " + ddItems.SelectedItem.Text + " GROUP BY Name ";
using (SqlConnection con = new SqlConnection(strConn))
{
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = con;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "Select Distinct Year from MonthlySales Order By DESC";

        using (DataSet objDs = new DataSet())
        {
            using (SqlDataAdapter dAdapter = new SqlDataAdapter())
            {
                dAdapter.SelectCommand = cmd;
                con.Open();
                dAdapter.Fill(objDs);
                con.Close();

                if (objDs.Tables[0].Rows.Count > 0)
                {
                    ddItems.DataSource = objDs.Tables[0];
                    ddItems.DataTextField = "Year";
                    ddItems.DataValueField = "Year";
                    ddItems.DataBind();
                    ddItems.Items.Insert(0, "Select");
                }
            }
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top