1

2个问题给大家。

1)如何按年份排序,使用 DESC 时会崩溃?

2)如果我像这样填充我的列表:

 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");
    }

如何使所选年份出现在 ddItems.SelectedItem 下?

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

当我动态填充我的列表时,另一个查询的那部分不起作用,任何原因/如何修复它。

问候。

编辑:为了让我的第二个问题更清楚,在调试后它总是选择下拉列表中的顶部项目而不是实际选择的项目?

4

4 回答 4

1

答案 1)

cmd.CommandText = "Select Distinct Year from MonthlySales ORDER BY 1 DESC"
于 2012-05-08T19:39:12.223 回答
1

首先,在你的 sql 中你缺少“order by”...使用这个

"Select Distinct Year from MonthlySales order by Year DESC"

其次,您需要使用 SelectedValue 属性来获取下拉列表的选定值...如下...

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

话虽如此,我强烈建议您使用...“参数化” sql...这是一个有关如何启用参数化 sql 查询的示例... 给我参数化 SQL,或者给我死

更新:

看起来你在每个帖子上绑定你的下拉列表......你可以试试这个......

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");
    }
于 2012-05-08T19:39:55.283 回答
1

你失踪了order by。这里是。

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

对于您的第二部分,您可以执行此操作。请注意空间" GROUP BY Name"

WHERE Year = " + ddItems.SelectedItem.Text + " GROUP BY Name ";
于 2012-05-08T19:40:10.120 回答
1
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");
                }
            }
        }
    }
}
于 2012-05-08T19:56:18.290 回答