我有一个转发器,它内部有图像。我想根据排名显示不同的图像,例如,如果排名是1我显示图像,如果是2我显示其他等,我也有5种图像和5种等级。
排名是数据集中的一列。但我的功能无法正常工作,我无法得到正确的结果。它只显示第一张照片。您对此操作有何建议?
非常感谢。
这是我的代码
public string getimg()
{
SqlConnection con = new SqlConnection("data source=.;database=site;integrated security=true;");
string sSQL = "Select username ,weight,point , Rank() over(order by point desc) as 'ranking' from karbar order by point desc";
SqlCommand cmd = new SqlCommand(sSQL, con);
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);
foreach (DataRow myRow in ds.Tables[0].Rows)
{
if (Convert.ToInt32(myRow["ranking"]) == 1)
{ return "price/con1.png"; }
else return "price/con2.png";
}
}
及其html
<div class="innerTitle">
<img style="width:55px;height:55px" alt="" src="<%# getimg() %>" /> </div>
<div class="innerContent" style=" width: 391px; direction:rtl ">
答案 0 :(得分:1)
您好,您可以尝试这个答案
1修改你的功能
public string getimg(int indexRow)
{
}
2添加此选择代码
if (Convert.ToInt32(myRow["ranking"]) == 1
&& Convert.ToInt32(myRow["yourIndex"]) == indexRow ) //in order to select nice row
{
return "price/con1.png";
}
return "price/con2.png";
在通话中3,您必须在页面中打印索引行,以便选择
img style="width:55px;height:55px" alt="" src="<%# getimg(1) %>" /> //getimg(1) print first row.
4让你索引
input type="hidden" runat="server" id="test" value="<%# DataBinder.Eval(Container.DataItem, "YourIndex") />%>" />
答案 1 :(得分:0)
试试这个:
而不是Rank(),尝试使用row_number()函数
Select username ,weight,point ,
ROW_NUMBER() over(order by point desc) as 'ranking'
from karbar order by point desc
。因为如果两个用户具有相同的排名,则两者都将排名为1,而如果使用row_number(),则他们将获得1和2排名