我使用的是telerik grid,这里我把RadGrid的UserControl放在了GridTemplateColumn里面,类似这样
<telerik:GridTemplateColumn UniqueName="HardCoded" HeaderText="HardCoded" AllowFiltering="true"
DataField="AccountDesc">
<ItemTemplate>
<asp:Label ID="HardCoded" runat="server" Text='<%# Bind("HardCoded") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<UserCtrl:UserCtrl runat="server" ID="lbl" />
</EditItemTemplate>
<InsertItemTemplate>
<UserCtrl:UserCtrl runat="server" ID="lbl" />
</InsertItemTemplate>
</telerik:GridTemplateColumn>这里
这是我的UserControl组合代码
<telerik:RadComboBox runat="server" ID="HardCoded" >
<Items>
<telerik:RadComboBoxItem Value="1" Text="Member" Selected="true" />
<telerik:RadComboBoxItem Value="2" Text="Employee" />
<telerik:RadComboBoxItem Value="3" Text="All" />
</Items>
</telerik:RadComboBox>在数据绑定事件中,如果我按下网格上的编辑按钮,我只想设置选定的值。以下是我的DataBound事件代码
protected void RadGrid1_OnItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item.IsInEditMode)
{
GridEditableItem editableItem = e.Item as GridEditableItem;
RadComboBox HardCoded = editableItem["HardCoded"].Controls[0] as RadComboBox;
// I've also tried
RadComboBox HardCoded = (RadComboBox)e.Item.FindControl("HardCoded");//it also didn't work
}
}在这里,我总是得到object reference not set to a instance of a object的错误,因为它无法找到我的UserControl RadCombo
类似地,如果我想在插入事件中获得值,我无法找到我的组合框,这是我的代码
protected void RadGrid1_InsertCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
string HardCoded = ((RadComboBox)ii["HardCoded"].FindControl("HardCoded")).SelectedValue;
}未设置对象引用的类似异常
发布于 2016-09-08 02:41:48
在OnItemDataBound事件处理程序中使用GridEditFormItem,而不是使用GridEditableItem,如下所示:
protected void RadGrid1_OnItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditFormItem && e.Item.IsInEditMode)//the grid is about to Edit.
{
GridEditFormItem item = (GridEditFormItem)e.Item;
RadComboBox combo = (RadComboBox)item.FindControl("HardCoded");
combo.SelectedValue = "Something";
}
}https://stackoverflow.com/questions/39373734
复制相似问题