自定义和访问onItemCommand控件

时间:2012-09-20 09:58:58

标签: telerik radgrid

这是我的代码

<EditFormSettings PopUpSettings-Width="500" EditFormType="Template">
 <FormTemplate>
 <asp:DropDownList ID="Status" DataSourceID="TerminalStatusDTS" DataValueField="STATUS_ID" DataTextField="STATUS_NAME"  runat="server"  Width="175px"  ></asp:DropDownList>
 </FormTemplate>

我的问题是如何在Status事件中隐藏e.commandName=RadGrid.InitInsertCommandName onItemCommand

1 个答案:

答案 0 :(得分:1)

对于RadGrid的每一行,

EditForm是不同的。首先,您必须获取正在编辑的行的行索引并获取对“编辑”表单的引用。然后你可以在编辑表单中找到控件。示例代码可能如下:

if (e.CommandName == RadGrid.InitInsertCommandName)
{
    RadGrid radgrid = (RadGrid)sender;
    int rowindex = e.Item.RowIndex;
    GridEditFormItem item = radgrid.MasterTableView.GetItems(GridItemType.EditFormItem)[rowindex] as GridEditFormItem;
    DropDownList statusDropDownList = (DropDownList)item.FindControl("Status");
    statusDropDownList.Visible = false;
}

但是,这可能不是你所需要的。我的意思是当页面在ItemCommand上有回发时,状态下拉列表将是可见的,我认为您只需要在单击“插入”命令时隐藏控件(更新和插入时的不同行为)。

因此,您可以访问DropDownList并将其隐藏在ItemCreated事件或ItemDataBound事件中。

例如:

void rad_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditFormInsertItem)
    {
        DropDownList statusDropDownList = (DropDownList)e.Item.FindControl("Status");
        statusDropDownList.Visible = false;
    }
}