C# SharePoint DataGrid中动态列未触发的事件

C# SharePoint DataGrid中动态列未触发的事件,c#,sharepoint,events,datagrid,C#,Sharepoint,Events,Datagrid,在Sharepoint的Web部件中,我尝试根据用户选择的选项动态地向DataGrid添加数量可变/顺序不同的按钮列。问题是动态列没有触发我在DataGrid上设置的事件(例如SelectedIndexChanged)。当表最初包含一组静态列时,它们是在CreateChildControls()中创建的,一切都很顺利。但是,由于它们现在是动态的,我不得不推迟添加它们,直到搜索按钮的单击事件触发之后。我想知道是否有一些地方我需要移动列的创建,仍然允许它是动态的,但也允许它注册/触发事件 Creat

在Sharepoint的Web部件中,我尝试根据用户选择的选项动态地向DataGrid添加数量可变/顺序不同的按钮列。问题是动态列没有触发我在DataGrid上设置的事件(例如SelectedIndexChanged)。当表最初包含一组静态列时,它们是在CreateChildControls()中创建的,一切都很顺利。但是,由于它们现在是动态的,我不得不推迟添加它们,直到搜索按钮的单击事件触发之后。我想知道是否有一些地方我需要移动列的创建,仍然允许它是动态的,但也允许它注册/触发事件

CreateChildControls()中的outputDG创建:

在搜索按钮的单击事件期间:

ButtonColumn buttonColumnSelect = new ButtonColumn();
buttonColumnSelect.ButtonType = ButtonColumnType.LinkButton;
buttonColumnSelect.CommandName = "Select";
buttonColumnSelect.HeaderText = "Column";
buttonColumnSelect.DataTextField = "columnField";
outputDG.Columns.Add(buttonColumnSelect);

然后,在同一事件之后,我遍历结果集并添加数据行。正如我所提到的,当ButtomColumn代码在CreateChildControls()中出现时,这一切都起作用了,但它一移动到事件中就停止了工作。我最好的猜测是,该专栏的事件没有机会注册以便触发,因为它发生在不同的事件中。如果我需要以不同的方式构建数据网格来解决这个问题,我绝对愿意;我只需要能够动态指定要使用的不同列。

可能需要在DataGrid上设置ID属性。
否则asp将很难找到您的控件。

我的案例的修复方法是将添加列移动到页面的加载事件中,并在添加所有列后将DataGrid添加到控件中

ButtonColumn buttonColumnSelect = new ButtonColumn();
buttonColumnSelect.ButtonType = ButtonColumnType.LinkButton;
buttonColumnSelect.CommandName = "Select";
buttonColumnSelect.HeaderText = "Column";
buttonColumnSelect.DataTextField = "columnField";
outputDG.Columns.Add(buttonColumnSelect);