C#模板列中的telerik网格单元值

C#模板列中的telerik网格单元值,c#,telerik-grid,C#,Telerik Grid,我有一个这样定义的网格模板列(为了节省时间和空间,我将只放置该列): 知道怎么修吗 Thx很多。我可能会弄错(因为我对Telerik控件套件不太熟悉),但通常情况下,数据绑定事件直到控件的预渲染事件之后才会发生。您必须更早地进行数据绑定,或者将逻辑移到数据库中的稍后部分。试试看 foreach (GridDataItem item in RadGrid1.Items) { if(item.ItemType == GridItemType.Item ||

我有一个这样定义的网格模板列(为了节省时间和空间,我将只放置该列):

知道怎么修吗

Thx很多。

我可能会弄错(因为我对Telerik控件套件不太熟悉),但通常情况下,数据绑定事件直到控件的预渲染事件之后才会发生。您必须更早地进行数据绑定,或者将逻辑移到数据库中的稍后部分。

试试看

foreach (GridDataItem item in RadGrid1.Items)
    {
        if(item.ItemType == GridItemType.Item ||
                    item.ItemType ==   GridItemType.AlternatingItem)
        {
            string k = item["Id"].Text;// is empty string 
            ...

在telerik论坛上回应说,解决方案似乎相当简单:

foreach (GridDataItem item in grdHeader.EditItems)
            {
                // if in editing mode
                GridEditableItem edititem = (GridEditableItem)item.EditFormItem;
                RadTextBox txtHeaderName = (RadTextBox)edititem.FindControl("txbId");
                //otherwise
                Label lbl= (Label)edititem.FindControl("lblId");
                string id = lbl.Text;
            }

不,数据绑定已经完成!因为若列通常是绑定的,比如不使用模板,我可以使用item[“Id”]访问它?我只看到lblId和txbId,如果您没有编辑,txbId不应该存在。很抱歉这么晚才回复:)。。。item[“Id”]应该为我提供网格中每个项目的唯一Id。确切地说,txbId是一个坏例子,因为我没有编辑,所以我会编辑文章!但是应该有一种方法可以访问OnPreRender EventInterest中的单元格…不确定为什么它不可用,只要GridDataItem具有“Id”。你能自己在行中循环并得到单元格,而不是尝试使用RadGrid.Items吗?我希望我知道怎么做,因为单元格在模板列中:)无论如何,我在telerik论坛上发布了这个,所以他们可能知道,但仍然没有回答。如果我能从他们那里得到反馈,我也会把它贴在这里。Thx很多。不,仍然是空字符串。Thx:您能在数据绑定期间这样做吗?这样您就可以在绑定时访问每个项了?我会尝试,但最好在预渲染时使用它,因为我需要根据DB的值更改某些列的工具提示,这仅在预渲染时才可能!?。当我尝试使用模板列时,会出现复杂情况:/
foreach (GridDataItem item in RadGrid1.Items)
    {
        if(item.ItemType == GridItemType.Item ||
                    item.ItemType ==   GridItemType.AlternatingItem)
        {
            string k = item["Id"].Text;// is empty string 
            ...
foreach (GridDataItem item in grdHeader.EditItems)
            {
                // if in editing mode
                GridEditableItem edititem = (GridEditableItem)item.EditFormItem;
                RadTextBox txtHeaderName = (RadTextBox)edititem.FindControl("txbId");
                //otherwise
                Label lbl= (Label)edititem.FindControl("lblId");
                string id = lbl.Text;
            }