如何在绑定到转发器之前编辑数据集中的数据

时间:2014-12-23 07:00:55

标签: c# asp.net

[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页面上没有显示数据。

1 个答案:

答案 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();