0

我有一个ListBoxGridView. 使用这个ListBox我想为每一行显示一个工具提示,只显示GridView. 我已经GridView在前端绑定了。

我尝试过的代码是给出超出范围错误的索引:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            for (int i = 0; i <= GridView1.Rows.Count; i++)
            {
                String ProCol = GridView1.Rows[i].Cells[0].ToString();

                if (ProCol.Length != 0)
                {
                    e.Row.Cells[0].ToolTip = ListBox1.Items[i].ToString().Trim();
                }
            }
        }
    }
4

2 回答 2

3

它在 for 循环的最后一次迭代中失败,因为索引是从零开始的(第一项具有 0 索引,最后一项具有count-1索引)。代替

i <= GridView1.Rows.Count

i < GridView1.Rows.Count
于 2012-09-10T07:10:28.407 回答
2

尝试将您的代码移动到DataBound事件中,GridView而不是在RowDataBound. 这样,它只会在所有行都已绑定并且GridView.Rows集合已初始化时运行一次。

此外,您应该按照Michal Klouda在他<=关于<.

并且ListBox1在绑定GridView.

只要您绑定ListBoxbefor 就应该工作的示例代码GridView

protected void GridView1_DataBound(object sender, EventArgs e)
{
    var gv = (GridView)sender;
    for (int i = 0; i < gv.Rows.Count; i++)
    {
        var oneRow = gv.Rows[i];
        String ProCol = oneRow.Cells[0].ToString();

        if (ProCol.Length != 0)
        {
            oneRow.Cells[0].ToolTip = ListBox1.Items[i].ToString().Trim();
        }
    } 

}
于 2012-09-10T09:28:21.540 回答