[context] c#/ asp.NET
我在查询的数据集中有一个表,其中包含排名和星数。我试图改变排名,以便正确地代表关系。如果五个学生分别获得10,7,7,7,3个星,那么等级应该是1,2,2,2,5,而不是1,2,3,4,5。
表格中的数据只是增加了排名" RowNum"列,我正在尝试修改列数据,以便它正确表示关系。
[代码简单排名 - 代码背后]
if (ds.Tables[0].Rows.Count > 0)
{
rpt_BoardList.DataSource = ds.Tables[0];
rpt_BoardList.DataBind();
}
[ASPX]
<asp:Repeater ID="rpt_BoardList" runat="server">
<ItemTemplate>
<tr>
<td class="center"><%# Eval("RowNum") %></td>
<td class="center"><%# Eval("username") %></td>
<td class="center"><%# Eval("starCnt") %></td>
</tr>
</ItemTemplate>
这很好用。
[带有关系的新代码]
这是我尝试修改表中的数据,但没有工作....表格按星数的降序排序。这里的逻辑是记住最后的星数和修改等级数的关系数。我相信我在编辑表数据时遇到了问题。
if (ds.Tables[0].Rows.Count > 0)
{
DataTable dTable = new DataTable();
dTable = ds.Tables[0].Copy();
for (int i = 0; i < dTable.Rows.Count; i++)
{
string strRowNum = dTable.Rows[i]["RowNum"].ToString();
string strStarCtn = dTable.Rows[i]["starCtn"].ToString();
int temp = 0;
if (last_starCtn == int.Parse(strStarCtn))
{
tie_counter++;
temp = int.Parse(strRowNum) - tie_counter;
dTable.Rows[i]["RowNum"] = temp.ToString();
}
else
{
tie_counter = 0;
last_starCtn = int.Parse(strStarCtn);
}
}
rpt_BoardList.DataSource = dTable;
rpt_BoardList.DataBind();
============================
目前返回错误。并且aspx页面上没有显示数据。
答案 0 :(得分:0)
这是代码
for (int i = 0; i < dTable.Rows.Count; i++)
{
string strRowNum = dTable.Rows[i][8].ToString(); // RowNum
string strStarCtn = dTable.Rows[i][6].ToString(); // starCtn
int temp = 0;
int starCount;
int numRows;
bool result1 = int.TryParse(strRowNum, out numRows);
bool result2 = int.TryParse(strStarCtn, out starCount);
if (result1 && result2)
{
if (last_starCtn == starCount)
{
tie_counter++;
temp = numRows - tie_counter;
dTable.Rows[i][8] = temp.ToString(); // RowNum
}
else
{
tie_counter = 0;
last_starCtn = starCount;
}
}
}
rpt_BoardList.DataSource = dTable;
rpt_BoardList.DataBind();