GridView排序后,所选行不会更改

时间:2009-09-09 17:11:22

标签: c# asp.net gridview

我对GridView有一个奇怪的问题。我设置了一个Select列,并允许排序。如果我选择一行,然后对网格进行排序,选择保持不变并且网格排序。也就是说,突出显示的行已更改,但选择的索引似乎没有。

查看手表中的网格,似乎所选索引属性实际上保持不变,但所选数据键正在更改。

我很困惑,无法追查为什么会这样,有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我发现a change request for this exact issue表明了以下内容:

  

我们不保留设计   跨越各种选择的轨道,   更新,删除等。这部分将   不要改变。

看起来你需要一种不同的方式来跟踪各种选定的行。

答案 1 :(得分:1)

实际上,我找到了解决这个问题的方法,也许并不那么甜,但无论如何,我得到了我想要的东西:) 在GridView_PreRender加载事件

protected void GridView1_PreRender(object sender,EventArgs e)         {              //如果长篇文章,则将文本固定..

        if (GridView1.Controls.Count != 0)
        {
            foreach (GridViewRow r in GridView1.Controls[0].Controls)
            {
                foreach (TableCell tc in r.Controls)
                {
                    if (tc.Text != "" && tc.Text.Length > 39)
                    {
                        tc.Text = tc.Text.Substring(0, 39) + " ...";
                    }
                }
            }
        }

        // here is the where the magic happens :)
        if (GridView1.SelectedRow != null)
        {
            GridViewRow row = GridView1.SelectedRow;
            if (row.Cells.Count > 1)
            {
                //Here I pick the p.keyID
                SetOrderData(Convert.ToInt32(row.Cells[1].Text));

                this.LabelDebug.Text = row.Cells[1].Text;
            }
        }
    }