0

我有一个中继器,它内部有图像。我想根据排名显示不同的图像,例如,如果排名为 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 ">
4

2 回答 2

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") />%>" />
于 2012-08-02T08:34:45.557 回答
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 排名

于 2012-08-02T08:36:09.860 回答