簡體   English   中英

模板列中的C#telerik網格單元格值

[英]C# telerik grid cell value from template column

我有一個像這樣定義的grid-template-column(為了節省時間和空間,我只將其放在該列上):

<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
}

知道如何解決嗎?

多謝。

似乎解決方案相當簡單,在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;
            }

我可能會誤會(因為我對Telerik控件套件不是很熟悉),但是通常,直到控件的PreRender事件之后才發生數據綁定事件。 您必須更早地使用DataBind,或者將邏輯移到頁面生命周期的后期。

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM