如何将Gridview行转换为int OR如何向下和向上提升行

时间:2013-06-13 20:00:27

标签: c# asp.net aspxgridview

我正在尝试制作一份清单。 当我在Gridview中选择一行时,红线表示上方和下方的行

这是ASP的一面

 protected void rowCommand(object sender, GridViewCommandEventArgs e)
{

    switch (e.CommandName)
    {

        case "PIC":

                ImageButton i = (ImageButton)e.CommandSource;
                GridViewRow row = (GridViewRow)i.NamingContainer;
                row.BackColor = System.Drawing.Color.Red;
                **//problem**
                row = Convert.ToInt32(row + 1);
                //problem
                Session["Row"] = row;
     }
 }

如何将行转换为数字以添加一个并减去一个 以及如何将int num转换回行类型


它无法正常工作,我可以通过此代码捕获行号

ImageButton i = (ImageButton)e.CommandSource;
                GridViewRow row = (GridViewRow)i.NamingContainer;

但当我尝试做你提供的不工作的时候 我只需要:

Session["Row"] = row;

并提升\将行减少一个

2 个答案:

答案 0 :(得分:0)

您无法将GridViewRow转换为int,但GridViewRow具有RowIndex属性,请参阅此处的MSDN文档:GridViewRow.RowIndex

答案 1 :(得分:0)

e.CommandArgument是生成事件的行的从零开始的整数索引。

所以e.CommandArgument - 1将是之前的行,而+ 1将是之后的行。确保检查行集的边界(例如,没有负索引,没有索引大于length - 1)

编辑:要获取这些行,你会做类似的事情(没有保证,IDE没有打开):

    GridViewRow gvrBefore = null;

    if ( ((int)e.CommandArgument) > 0) {
       gvrBefore = MyGridObject.Rows[((int)e.CommandArgument) - 1];
    }