Не удается преобразовать DataItem в DataRowView в пользовательском сценарии привязки

У меня есть объект, который возвращает IList, который я получаю из своего ObjectDataSource и привязываю к Gridview. Все работает нормально, если я просто использую стандартную привязку, но я пытаюсь настроить свою привязку, чтобы установить свойства кнопки ссылки следующим образом:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //  extract the link button
                LinkButton lnkViewMap = (LinkButton)e.Row.FindControl("lnkViewMap");

                //  grab the datarowview
               System.Data.DataRowView row = (System.Data.DataRowView)e.Row.DataItem;

                //  set the onclientclick to fire our showMap javascript function,
                //  passing through the lat/longs
                lnkViewMap.OnClientClick = string.Format("showMap({0}, {1}); return false;", row["Lat"], row["Long"]);
            }
        }

Моя ошибка возникает, когда я привожу e.Row.DataItem к DataRowView. Приведенный выше код взят из замечательного блога Мэтта Берсета на Virtual Earth... именно его я и пытаюсь здесь реализовать. Любые идеи?


person Webjedi    schedule 07.11.2008    source источник


Ответы (1)


Установите точку останова в отладчике и посмотрите, какой на самом деле тип e.Row.DataItem.

Это будет только DataRowView, если DataSource, которое вы устанавливаете в сетке, равно DataView или DataTable. В противном случае это будет тип элемента коллекции.

person Brannon    schedule 07.11.2008
comment
Это сделало это ... Я привел DataItem к моему типу элемента, а затем получил доступ к его свойствам, используя обычную запись, и это сработало ... спасибо! - person Webjedi; 07.11.2008
comment
NP .. плюс это лучше, чем возиться с DataRowViews! Строго типизированная привязка данных FTW. - person Brannon; 11.11.2008