1

我有一个用户控件,其中包含一个单选列表,在 SelectIndexChanged 上它会更新一个下拉列表。我整理了一个基本页面并将用户控件添加到它工作正常的页面,但是当我将控件移动到 radgrid 内部时它不起作用,它会回发但从不调用 SelectIndexChanged 事件。

我已经提出了关于这个Q. 1Q. 2的 2 个先前的问题,它们说需要在 aspx 页面中设置 OnSelectedIndexChanged。我的问题是该控件在 aspx 页面中不存在并且是稍后创建的,因此该解决方案对我不起作用。

工作代码

工作.aspx

<TT:ToolTipControl ID="ToolTipEdit" runat="server" />

工作.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    ToolTipEdit.getEditToolTip("POL_TERM_CD", "DataPolTermDropDownlistEdit");
}

用户控制

用户控件.ascx.cs

public void getEditToolTip(string fieldName, string ddlName)
{
     DataPolTermRadioListBox ccPolTermRadioListBox = new DataPolTermRadioListBox(); //custom radio list
     ccPolTermRadioListBox.ID = "PolTermRadioListBox";
     ccPolTermRadioListBox.AutoPostBack = true;
     ccPolTermRadioListBox.SelectedIndexChanged += new System.EventHandler(updateParent);
     ToolTip.Controls.Add(ccPolTermRadioListBox);
}

破码

破碎页面.aspx

<telerik:RadGrid ID="rgState" Skin="WebBlue" runat="server" OnNeedDataSource="rgState_NeedDataSource"
     AutoGenerateColumns="False" OnPreRender="rgState_PreRender">
     <MasterTableView DataKeyNames="wrtnStPolId" AllowAutomaticUpdates="false" AllowAutomaticDeletes="true"
         AllowAutomaticInserts="false" CommandItemDisplay="Top" AllowMultiColumnSorting="True"
         EditMode="InPlace" GroupLoadMode="Server" Caption="State(s) and Exposure(s)">
         <Columns>
             <telerik:GridTemplateColumn AllowFiltering="false" HeaderText="Pol Type Nstd" SortExpression="nonStdPolTypeCd"
                 UniqueName="nonStdPolTypeCd">
                 <ItemTemplate>
                     <asp:Label ID="lblNonStdPolTypeCd" runat="server" align="center" Text='<%#DataBinder.Eval(Container.DataItem, "nonStdPolTypeCd")%>' />

                 </ItemTemplate>
                 <EditItemTemplate>
                     <cc1:DataNonStdTypeCdDropDownList ID="ddlNonStdTypeCd" runat="server" ClientIDMode="Predictable">
                     </cc1:DataNonStdTypeCdDropDownList>
                     <TT:ToolTipControl ID="ttcNonStdPolTypeCdEdit" runat="server" />
                 </EditItemTemplate>
             </telerik:GridTemplateColumn>
         </Columns>
     </MasterTableView>
 </telerik:RadGrid>

破碎页面.aspx.cs

protected void rgState_PreRender(object sender, EventArgs e)
        {

            RadGrid rgExpMod = (RadGrid)sender;

            foreach (GridDataItem row in rgExpMod.Items)
            {

                    GridDataItem gdiItem = (GridDataItem)row;

                    if (row.FindControl("ttcNonStdPolTypeCdEdit") != null)
                    {

                        DropDownList ddl = (DropDownList)row.FindControl("ddlNonStdTypeCd");
                        ddl.ID += row.RowIndex;
                        ddl.SelectedIndex = 2;

                        NCCI.PDC.Web.Controls.ucToolTip ttcNonStdPolTypeCdEdit = (NCCI.PDC.Web.Controls.ucToolTip)row.FindControl("ttcNonStdPolTypeCdEdit");
                        ttcNonStdPolTypeCdEdit.getEditToolTip("non_std_pol_type_cd", ddl.ID);

                    }
            }

        }
4

0 回答 0