访问telerik网格ItemCreated方法中的Linq数据

时间:2010-05-17 01:09:01

标签: c# asp.net linq data-binding telerik

不确定这个问题的标题是否有意义,但这是我的问题:

我有一个绑定到Linq数据对象的telerik网格,但是,我限制了返回的字段:

<IQueryable>filter = data.Select(x => new {x.ID, x.Name, x.Age});

我想在网格的ItemCreated方法中访问这些字段:

protected void rgPeople_ItemCreated(object sender, GridItemEventArgs e)
{
  Telerik.Web.UI.GridDataItem item = (GridDataItem)e.Item;
  ?????? Person = (???????)e.Item.DataItem;
}

我该声明什么??????因为我可以使用:

String ID = Person.ID;
String Name = Person.Name; etc

3 个答案:

答案 0 :(得分:1)

我认为我能够在ItemDataBound事件处理程序中执行您想要的操作。下面是我的代码的一部分。

protected void grMain_ItemDataBound(object sender, GridItemEventArgs e)
{

    if (e.Item is GridDataItem)
    {
          GridDataItem item = (GridDataItem)e.Item;
          //Now I can get at the object from the list that the row is bound to
          PricingCandidate candidate = (PricingCandidate)e.Item.DataItem;

    }
}

答案 1 :(得分:0)

这样的事情:

protected void rgPeople_ItemCreated(object sender, GridItemEventArgs e)
{
   if(e.Item.ItemType = GridItemType.AlternatingItem Or e.Item.ItemType =                          GridItemType.Item)
    {    
        Telerik.WebControls.GridDataItem item = e.Item;

        Label lbl as Label;

        lbl= item("ColumnName").FindControl("lblName")



    }
}

根据您想知道的方式做什么 - 也许您应该在Row DataBinding事件上执行任务。

答案 2 :(得分:0)

不,我没有错过你的观点。 Label与GridDataItem或“Person”对象一样多。我知道你的观点是用勺子作为解决方案,所以你走了。

protected void rgPeople_ItemCreated(object sender, GridItemEventArgs e)
{   
    if (e.Item is GridDataItem)
    {
        var item = ((GridDataItem)e.Item);
        Hashtable values = new Hashtable();
        item.ExtractValues(values);
        string Name = (string)values["Name"];
        string ID = (string)values["ID"];
        string Age = (string)values["Age"];
    }
 }