![](/img/trans.png)
[英]How to get value of column in OnItemCreated event in telerik C#
[英]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.