Значение ячейки сетки C # telerik из столбца шаблона - PullRequest
4 голосов
/ 06 мая 2011

У меня есть столбец-шаблон-сетка, определенный следующим образом (чтобы сэкономить время и пространство, я помещу только столбец):

<telerik:GridTemplateColumn HeaderText="Id" Reorderable="true" SortExpression="Id" UniqueName="Id" DataField="Id">
                    <ItemTemplate>
                        <asp:Label ID="lblId" runat="server" Text='<%# Eval("Id") %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadTextBox ID="txbId" Width="50px" runat="server" TextMode="SingleLine"
                            Text='<%# Bind("Id") %>' />
                    </EditItemTemplate>
                    <ItemStyle VerticalAlign="Top" />
             </telerik:GridTemplateColumn>

И я хочу в событии PreRender извлечь значениеэтой колонки

protected void RadGrid1_PreRender(object sender, System.EventArgs e)
    {
        //string selectedItem = ((GridDataItem)RadGrid1.SelectedItems[0])["Id"].Text;
        foreach (GridDataItem item in RadGrid1.Items)
        {
            //not working
            string k = item["Id"].Text;// is empty string 
            string key = (item["Id"].TemplateControl.FindControl("lblId") as RadTextBox).Text;// null pointer
}

Есть идеи, как это исправить?

Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Похоже, решение довольно простое, ответил на форуме 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;
            }
0 голосов
/ 06 мая 2011

Попробуйте

foreach (GridDataItem item in RadGrid1.Items)
    {
        if(item.ItemType == GridItemType.Item ||
                    item.ItemType ==   GridItemType.AlternatingItem)
        {
            string k = item["Id"].Text;// is empty string 
            ...
0 голосов
/ 06 мая 2011

Я могу ошибаться (поскольку я не очень хорошо знаком с набором элементов управления Telerik), но обычно события привязки данных происходят только после события PreRender элемента управления. Вам придется использовать DataBind ранее или перенести логику на более поздние этапы жизненного цикла .

.
...