这是我的场景
我有带有 ID、名称和价格列的中继器。我想按下拉列表中的加入和降序对价格列进行排序。我的下拉列表在中继器之外。请帮助 me.im 新手 asp.net
c#
SqlConnection myconn;
SqlCommand mycomm;
myconn = new
SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
string q = ("SELECT postad.adid, postad.adtitle, postad.rate, postad.date, postad.pic1, addstate.statename, addcity.cityname, addsubcat.scatname, addcat.catname FROM addcity INNER JOIN addstate INNER JOIN addsubcat INNER JOIN postad INNER JOIN addcat ON postad.cat = addcat.catid ON addsubcat.subcatid = postad.scat ON addstate.stateid = postad.state ON addcity.cityid = postad.city WHERE (postad.scat = @scat) and (postad.expiry >= Getdate()) and postad.status='Approved'");
mycomm = new SqlCommand(q, myconn);
mycomm.Parameters.AddWithValue("@scat", Request.QueryString["scid"]);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(mycomm);
myconn.Open();
da.Fill(dt);
if (dt.Rows.Count > 0 && dt.Rows[0][0] != string.Empty)
{
rpt3.DataSource = dt;
rpt3.DataBind();
}
else
{
rpt3.DataSource = null;
rpt3.DataBind();
}
myconn.Close();
<asp:Repeater ID="Repeater2" DataSourceID="SqlDataSource1" runat="server">
<ItemTemplate >
<td class="itemWidth" style="margin-top:2%">
<asp:LinkButton ID="LinkButton6" CssClass="cat" runat="server"
PostBackUrl='<%# Eval("subcatid", "viewads.aspx?scid={0}") %>'
Text='<%# Eval("scatname") %>' ForeColor="#666666"></asp:LinkButton><br />
</td>
</ItemTemplate>
</asp:Repeater>
<h5>Price</h5>
<asp:DropDownList ID="DropDownList1" CssClass="form-control" runat="server"></asp:DropDownList>
</div>
我认为你的问题比 ASP.NET 更与sql相关。对 select-语句的输出进行排序是通过在其末尾添加 desc 或 asc 来完成的。
SELECT
postad.adid,
postad.adtitle,
postad.rate,
postad.date,
postad.pic1,
addstate.statename,
addcity.cityname,
addsubcat.scatname,
addcat.catname
FROM addcity
INNER JOIN addstate
INNER JOIN addsubcat
INNER JOIN postad
INNER JOIN addcat
ON postad.cat = addcat.catid
ON addsubcat.subcatid = postad.scat
ON addstate.stateid = postad.state
ON addcity.cityid = postad.city
WHERE (postad.scat = @scat)
AND (postad.expiry >= GETDATE())
AND postad.status = 'Approved'
ORDER BY CASE
WHEN @orderBy = 0 THEN postad.rate
END ASC,
CASE
WHEN @orderBy = 1 THEN postad.rate
END DESC
将@orderBy相加,就像值为 0 或 1 的 @scat 一样0 表示 ASC,1 表示 DESC