データ (データリストにある) を価格で並べ替えようとしています。ユーザーが最も高いものから最も安いもの、またはその逆の価格を希望する場合に選択できる DropDownList があることを意味します。データベースに保存されている価格は、catID に従ってランダムな順序になっています。私は次のようにコードを書きましたが、私が書いたものに従ってソートされませんでした。私はここで何を間違えましたか?私に助言してください。
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
bindDropDownList();
}
private void bindDropDownList()
{
DropDownList1.DataTextField = "price";
DataList1.DataSourceID = null;
DataList1.DataSource = getReader();
DropDownList1.DataBind();
}
private SqlDataReader getReader()
{
SqlDataReader reader = null;
if(DropDownList1.Text == "-Select-")
{
string strConnectionString =
ConfigurationManager.ConnectionStrings["ProBizConnection"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConnectionString);
string strCommandText ="SELECT * FROM [Category ] WHERE catID<= 20";
SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
myConnect.Open();
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
else if (DropDownList1.SelectedValue == "Price - Highest to Lowest")
{
string strConnectionString =
ConfigurationManager.ConnectionStrings["ProBizConnection"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConnectionString);
string strCommandText = "SELECT catID, packageName, price, description1, description2, image1, image2 FROM Category WHERE catID <= 20 ORDER BY price desc";
SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
myConnect.Open();
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
else if (DropDownList1.DataTextField == "Price - Lowest to Highest")
{
/string strConnectionString =
ConfigurationManager.ConnectionStrings["ProBizConnection"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConnectionString);
string strCommandText = "SELECT catID, packageName, price, description1, description2, image1, image2 FROM Category WHERE catID <= 20 ORDER BY price";
SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
myConnect.Open();
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
return reader;
}
私の .aspx コード:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" AppendDataBoundItems="true"
onselectedindexchanged="DropDownList1_SelectedIndexChanged" Height="18px"
Width="184px">
<asp:ListItem>-Select-</asp:ListItem>
<asp:ListItem>Price - Highest to Lowest</asp:ListItem>
<asp:ListItem>Price - Lowest to Highest</asp:ListItem>
</asp:DropDownList>