嵌套网格不会触发事件

时间:2016-07-21 09:21:54

标签: asp.net telerik telerik-grid

以下是包含某些事件的嵌套网格:

<%--BLOCK : TEST--%>
<telerik:GridTableView  CssClass="noColapse" runat="server" Name="RptPV" DataSourceID="LDS_PV_info" DataKeyNames="MSE_compteur" HierarchyDefaultExpanded="True" 
                        OnCallingDataMethods="Unnamed_CallingDataMethods" 
                        OnDataBinding="Unnamed_DataBinding" 
                        OnDisposed="Unnamed_Disposed" 
                        OnCreatingModelDataSource="Unnamed_CreatingModelDataSource" 
                        OnDataBound="Unnamed_DataBound" 
                        OnInit="Unnamed_Init" 
                        OnLoad="Unnamed_Load" 
                        OnPreRender="Unnamed_PreRender" 
                        OnSelectedIndexChanged="Unnamed_SelectedIndexChanged" 
                        OnUnload="Unnamed_Unload"   >

代码背后:

protected void Unnamed_CallingDataMethods(object sender, CallingDataMethodsEventArgs e)
    { this.here.Text += "CallingDataMethods";}

protected void Unnamed_DataBinding(object sender, EventArgs e)
    { this.here.Text += "Unnamed_DataBinding";}

protected void Unnamed_Disposed(object sender, EventArgs e)
    { this.here.Text += "Unnamed_Disposed";}

protected void Unnamed_CreatingModelDataSource(object sender, CreatingModelDataSourceEventArgs e)
    { this.here.Text += "Unnamed_CreatingModelDataSource";}

protected void Unnamed_DataBound(object sender, EventArgs e)
    { this.here.Text += "Unnamed_DataBound";}

(...)

我的 here.text 保持空白。但是会显示嵌套网格。

我需要访问父键值,折叠嵌套网格,隐藏嵌套网格或计算行数。
没有编辑,没有行点击,这些网格仅显示模板列中的数据&gt; 项目模板

嵌套网格是否有办法触发事件? 在女巫身上,我甚至可以访问数据库信息。

1 个答案:

答案 0 :(得分:0)

嵌套网格DO Not Fire事件!

如果您需要访问详细信息表,项目等。
您需要向PreRender中的MasterTableView添加方法,如下所示:

<MasterTableView   DataSourceID="myDataSource"
                   AllowMultiColumnSorting="True" 
                   DataKeyNames="Key1,Key2,KeyN" 
                   HierarchyDefaultExpanded="True"
                   OnPreRender="Unnamed_PreRender" >

该方法将使用递归方式遍历网格 您的工作方式可能会因您的HieararchyLoadMode而改变。

所以这是我的方法,如果你处于ClientServerbind模式,最简单的方法就存在。

protected void Unnamed_PreRender(object sender, EventArgs e)
{
    // MyControler is my recursive method.
    MyControler(RadGRID_MASTER.MasterTableView);
}



private void MyControler(GridTableView gridTableView)
{
    GridItem[] nestedViewItems = gridTableView.GetItems(GridItemType.NestedView);    
    foreach (GridNestedViewItem nestedViewItem in nestedViewItems)
    {
        foreach (GridTableView nestedView in nestedViewItem.NestedTableViews)
        {
            // Here you can operate your controls the way you want.
            if (nestedView.Name == "LAC" && nestedView.Items.Count == 0)
            {  
                // Do stuff 
            }

            if(nestedView.HasDetailTables)
            {
                MyControler(nestedView); 
            }
        }
    }
}
相关问题