0

在此处输入图像描述我有一个 RadGridEditForm 模板,其中有 checkBox 和 RadComboBox。

所以它包含2个按钮

1st-添加新记录(即 GridEditFormInsertItem)

2nd- 编辑(编辑现有记录。)

当复选框为 **CHECKED**** 时,我想禁用 RadComboBox我曾经使用“添加新记录”来跟踪代码,但当我单击 **Edit按钮时,它显示错误为 -

Unable to cast object of type 'Telerik.Web.UI.GridEditFormItem' to type 'Telerik.Web.UI.GridEditFormInsertItem'.

我的 checkedChanged 事件代码是

    protected void chkEHalfDay_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkHalfDay = (CheckBox)sender;
    GridEditFormInsertItem item = (GridEditFormInsertItem)chkHalfDay.NamingContainer;

        if (chkHalfDay.Checked == false)
        {
            ((RadComboBox)item.FindControl("rcbHalfDayType")).Enabled = false;
        }
        else
        {
            ((RadComboBox)item.FindControl("rcbHalfDayType")).Enabled = true;
        }
}

请建议我哪里出错了。提前致谢。

4

1 回答 1

1

试试这个

protected void chkEHalfDay_CheckedChanged(object sender, EventArgs e)
{
   CheckBox chkHalfDay = (CheckBox)sender;
   //GridEditFormInsertItem item = (GridEditFormInsertItem)chkHalfDay.NamingContainer;
   GridEditFormInsertItem item = chkHalfDay.NamingContainer as GridEditFormInsertItem;
   if(item == null)
     item = hkHalfDay.NamingContainer as GridEditFormItem;

  if (chkHalfDay.Checked == false)
     ((RadComboBox)item.FindControl("rcbHalfDayType")).Enabled = false;
  else
      ((RadComboBox)item.FindControl("rcbHalfDayType")).Enabled = true;
}

只需使用as运算符,因为它不会引发任何无效转换错误,它只会返回null您可以在下一行中检查的内容,如果chkHalfDay.NamingContainer不是GridEditFormInsertItem,则将其转换GridEditFormItem为编辑操作时的内容。

于 2012-10-09T06:39:29.170 回答