2017-03-16 65 views
0

我正在一个项目中,我需要通过代码隐藏创建一个Datagrid TemplateColumn,它将包含一个ImageButton;我已经找到了需要的CodeProject我,但我唯一的问题是,当我运行在运行时代码中,我得到试图寻找通过数据网格ITemplate ID需要是唯一的

多的ItemDataBound方法控制时,出现以下异常找到具有相同ID'uxPlusMinusImageButton'的控件。 FindControl要求控件具有唯一的ID。

这是我的代码

DataGridPopulateMethod

private void PopulateDataGrid() 
{ 
    TemplateColumn plusMinusContractImage = new TemplateColumn(); 
    plusMinusContractImage.ItemTemplate = new PlusMinusColumn("uxPlusMinusImageButton"); 

uxSummaryInfoDataGrid.ItemDataBound += new DataGridItemEventHandler(uxSummaryInfoDataGrid_ItemDataBound); 
uxSummaryInfoDataGrid.DataSource = contracts; 
uxSummaryInfoDataGrid.Columns.Add(new BoundColumn() { HeaderText = "ID", DataField = "ColumnID", Visible = false }); 
uxSummaryInfoDataGrid.Columns.Add(plusMinusContractImage); 
uxSummaryInfoDataGrid.Columns.Add(new BoundColumn() { HeaderText = "Title 1", DataField = "Column1" }); 
uxSummaryInfoDataGrid.Columns.Add(new BoundColumn() { HeaderText = "Title 2", DataField = "Column2" }); 
uxSummaryInfoDataGrid.DataBind(); 

DataGridOnItemDataBoundMethod

private void uxSummaryInfoDataGridItemDataBound(DataGrid summaryDataGrid, DataGridItem item) 
{ 
    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) 
    { 
     SummaryInformation summaryInfo = (SummaryInformation)item.DataItem; 
     ImageButton plusMinusImageButton = (ImageButton)item.Cells[1].FindControl("uxPlusMinusImageButton"); 
     plusMinusImageButton.Click += new ImageClickEventHandler(PlusMinusImageButton_Click); 

的ImageButton点击

protected void PlusMinusImageButton_Click(object sender, ImageClickEventArgs e) 
{ 
    PopulateDataGrid(); 
} 

回答

0

我解决了这个问题,我得到这个错误,因为我没有清除原来的动态datagrid列,所以它使用相同名称的控件。