来自页面的简化代码:
<%@ Page Language="C#" etc... %>
<%@ Register src="~/controls/RequiredField.ascx" tagname="rf" tagprefix="custom" %>
<telerik:RadGrid runat="server">
<MasterTableView>
<Columns>
<telerik:GridTemplateColumn DataField="Name" HeaderText="Name" SortExpression="Name">
<ItemTemplate><%#Eval("Name")%></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="NewName" runat="server" Text='<%#Bind("Name")%>'></asp:TextBox>
<custom:rf runat="server" />
</EditItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
在我的控制中,我想检查父项是否为EditItemTemplate
,然后设置telerik:GridTemplateColumn
的属性。例如:
public partial class controls_RequiredField : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.Parent is Telerik.Web.UI.GridEditFormItem.EditFormTableCell)
{
// how do I get a reference to 'Telerik.Web.UI.GridTemplateColumn' (or any other object that lets me set the header text)
((Telerik.Web.UI.GridTemplateColumn)this.Parent.Parent).EditFormHeaderTextFormat = "{0}:" + RequiredText.Text;
RequiredText.Visible = false;
}
}
}
答案 0 :(得分:1)
我没有telerik:RadGrid
,但它与MS GridView非常相似,所以我能够使用asp:GridView
测试您的问题(都继承自CompositeDataBoundControl Class (System.Web.UI.WebControls))
由于您的自定义控件位于EditItemTemplate
RequiredField
控件的Page_Load
事件,因此RadGrid
切换到编辑模式后才会触发,因此您应该可以放弃if (this.Parent is...)
检查,因为您知道网格处于编辑模式。
因此,通过自定义控件的页面加载指示网格处于编辑模式,您可以通过执行以下操作设置HeaderText
的{{1}}:
GridTemplateColumn
答案 1 :(得分:0)
这是我正在使用的代码:
protected void Page_Init(object sender, EventArgs e)
{
if (this.Parent is GridEditFormItem.EditFormTableCell)
{
GridEditFormItem.EditFormTableCell parentCell = (GridEditFormItem.EditFormTableCell)this.Parent;
string col = parentCell.ColumnName;
// ridiculous:
Control parentFormItem = this.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent;
if (parentFormItem is GridItem)
{
GridItem gi = (GridItem)parentFormItem;
GridColumn parentColumn = gi.OwnerTableView.Columns.FindByUniqueNameSafe(col);
if (parentColumn != null)
{
parentColumn.EditFormHeaderTextFormat = "{0}:" + RequiredText.Text;
RequiredText.Visible = false;
}
}
}
}
但是不得不绕过所有这些.Parent
让我感到不安。