异步/局部回传数据网格问题网格、局部、回传、数据

2023-09-10 20:50:13 作者:梦里也失望

我试图让一个aspx DataGrid控件执行后,结果在一个局部回传(异步),而不是一个完整的回发。我已经添加的ScriptManager,更新面板和内容模板的包装,但它仍然刷新页面,当我选择一个数据项,然后单击添加。

 < ASP:ScriptManager的ID =ScriptManager1=服务器的EnablePartialRendering =真>< / ASP:ScriptManager的>
 < ASP:UpdatePanel的ID =upPnlLookup=服务器的UpdateMode =条件ChildrenAsTriggers =真>
        <的ContentTemplate>
            < ASP:DataGrid的ID =ObjectPropertiesDataGrid的cellpadding =5CELLSPACING =5OnItemCommand =ObjectPropertiesDataGrid_ItemCommandOnItemDataBound =ObjectPropertiesDataGrid_ItemDataBound的AutoGenerateColumns =假的CssClass =列表DataKeyField =ID=服务器 >
              < ASP:TemplateColumn中>
               <的ItemTemplate>
                 < ASP:面板ID =multiValuePanel可见=假=服务器>
                        <表>
                           &其中; TR>
                             < TD VALIGN =顶>
                                 < ASP:按钮的ID =Add按钮的CssClass =按钮的CommandName =的AddValueWIDTH =65px文本=添加=服务器>< / ASP:按钮>
                                 < ASP:按钮的ID =addAllButton的CssClass =按钮的CommandName =AddAllValueWIDTH =85px文本=全部添加=服务器>< / ASP:按钮>
                                 < BR />
                                < ASP:列表框ID =listBoxValues​​WIDTH =250像素的CssClass =列表框的SelectionMode =多=服务器>< / ASP:列表框>
                              < / TD>
                              < TD VALIGN =顶>
                                < ASP:按钮的ID =removeButton的CssClass =键文本=删除WIDTH =65px的CommandName =RemoveValue=服务器>< / ASP:按钮>
                                < ASP:按钮的ID =removeAllButton的CssClass =键文本=全部删除WIDTH =85px的CommandName =RemoveAllValue=服务器>< / ASP:按钮>
                                  < BR />
                               < ASP:列表框ID =listBoxCurrentValues​​WIDTH =250像素的CssClass =列表框的SelectionMode =多=服务器>< / ASP:列表框>
                              < / TD>
                             < / TR>
                       < /表>
               < / ASP:面板>
        < / ItemTemplate中>
  < / ASP:TemplateColumn中>
< / ASP:DataGrid的>
< /的ContentTemplate>
     <触发器>
         < ASP:AsyncPostBackTrigger控件ID =Add按钮事件名称=点击/>
         < ASP:AsyncPostBackTrigger控件ID =removeButton事件名称=点击/>
         < ASP:AsyncPostBackTrigger控件ID =addAllButton事件名称=点击/>
         < ASP:AsyncPostBackTrigger控件ID =removeAllButton事件名称=点击/>
     < /触发器>
< / ASP:UpdatePanel的>
 

code背后(片段/相关方法):

 保护无效的Page_Load(对象发件人,EventArgs的)
    {
        SaveButton.Click + = SaveButton_Click;
        btnAddChild.Click + = btnAddChild_Click;
        btnAddChildTop.Click + = btnAddChildTop_Click;
        DeleteButton.Click + = DeleteButton_Click;
        CancelButton.Click + = CancelButton_Click;
        CopyButton.Click + = CopyButton_Click;
        NewButton.Click + = NewButton_Click;
        AddSiteButton.Click + = AddSiteButton_Click;
        RemoveSiteButton.Click + = RemoveSiteButton_Click;
        ActivateAll.Click + = ActivateAll_Click;
        DeactivateAll.Click + = DeactivateAll_Click;
        startDateCalender.SelectionChanged + = startDateCalender_SelectionChanged;
        endDateCalender.SelectionChanged + = endDateCalender_SelectionChanged;
        startDateCalender.Load + = startDateCalender_Load;
        endDateCalender.Load + = endDateCalender_Load;
        CacheButton.Click + = CacheButton_Click;


        如果(的IsPostBack)
            返回;
        如果(String.IsNullOrEmpty(请求[ID]))
        {
            的Response.Redirect(Default.aspx的);
        }
        其他
        {
            LoadData();
        }
    }

    私人无效LoadData()
    {
        。属性= ContentProviderFactory.GetContentProvider()GetObjectTypeProperties(CurrentContentObject.Type,假);
        uploadImage.DataSource = DataHelper.GetObjecTypeImageSizes(CurrentContentObject.Type);
        uploadImage.Container = CurrentContentObject;


        从属性属性P的foreach(VAR财产
                               让OBJECTPROPERTY = CurrentContentObject.GetProperty(p.Id)
                               其中,OBJECTPROPERTY == NULL
                               选择P)
        {
            CurrentContentObject.Items.Add(属性);
        }

        ObjectPropertiesDataGrid.DataSource =属性;
        VAR孩子= ContentProviderFactory.GetContentProvider()GetContentObjectChildren(CurrentContentObject.Id)。

        dgObjectChildren.DataSource = children.Where(C => c.Active);
        dgObjectInactiveChildren.DataSource = children.Where(C =>!c.Active);

        dgObjectParents.DataSource = ContentProviderFactory.GetContentProvider()GetContentObjectParents(CurrentContentObject)。
        ddlContentTypes.DataSource = ContentProviderFactory.GetContentProvider()GetContentObjectTypes(CurrentContentObject.Type)。
        ddlContentTypesTop.DataSource = ContentProviderFactory.GetContentProvider()GetContentObjectTypes(CurrentContentObject.Type)。

        SitesListBox.DataSource = ContentProviderFactory.GetContentProvider()GetContentObjectSitesAvailable(CurrentContentObject.Id)。
        SetSitesListBox.DataSource = ContentProviderFactory.GetContentProvider()GetContentObjectSites(CurrentContentObject.Id)。

        如果(CurrentContentObject.Id == 0)
        {
            Response.Status =301永久移动;
            Response.AddHeader(位置,/admin/Contentobjects/ObjectNotFound.aspx);
            到Response.End();
        }

        常量字符串DATE_FORMAT =MM / DD / YYYY;

        如果(CurrentContentObject.StartDate.ToString(DATE_FORMAT)!= SqlDateTime.MinValue.Value.ToString(DATE_FORMAT))
        {
            startDateTextBox.Text = CurrentContentObject.StartDate.ToShortDateString();
        }
        如果(CurrentContentObject.EndDate.ToString(DATE_FORMAT)!= SqlDateTime.MaxValue.Value.ToString(DATE_FORMAT))
        {
            endDateTextBox.Text = CurrentContentObject.EndDate.Date.ToShortDateString();
        }

        的DataBind();

        //如果一个孤儿/儿童,删除添加子按钮和下拉
        如果(ddlContentTypes.Items.Count == 0)
        {
            btnAddChild.Visible = FALSE;
            ddlContentTypes.Visible = FALSE;
        }
        如果(ddlContentTypesTop.Items.Count == 0)
        {
            ddlContentTypesTop.Visible = FALSE;
            btnAddChildTop.Visible = FALSE;
        }

        //添加删除确认的JavaScript
        DeleteButton.Attributes [的onclick] =返回confirm_object_delete();;

        RenderTypeHeader();
        RenderBreadcrumb();

        如果(CurrentContentObject.ParentId == 0)
        {
            UserInfo.AddToHistory(CurrentContentObject.Id,CurrentContentObject.Name);
        }
        其他
        {
            UserInfo.AddToHistory(CurrentContentObject.Parent.Id,CurrentContentObject.Parent.Name);
        }

        startCalenderPanel.Visible = FALSE;
        endCalenderPanel.Visible = FALSE;
    }


        保护无效ObjectPropertiesDataGrid_ItemCommand(对象发件人,DataGridCommandEventArgs E)
    {
        VAR ID =(int)的ObjectPropertiesDataGrid.DataKeys [e.Item.ItemIndex]

        开关(e.CommandName.ToLower())
        {
            案clearimage:
                {
                    //删除图像(不物理删除图像,但如果新的一个新的更新将被取代)
                    VAR imageProperty = e.Item.FindControl(imageProperty)的图像;
                    VAR tbFileName = e.Item.FindControl(tbFileName)的文本框;

                    tbFileName.Text =的String.Empty;
                    imageProperty.ImageUrl =的String.Empty;

                    打破;
                }
            案创值:
                {
                    //添加一个属性值型属性的列表
                    VAR listBoxValues​​ = e.Item.FindControl(listBoxValues​​)作为列表框;
                    VAR listBoxCurrentValues​​ = e.Item.FindControl(listBoxCurrentValues​​)作为列表框;

                    的foreach(;列表项>()式(项目=>以listBoxValues​​.Items.Cast&LT VAR项目item.Selected))
                    {
                        //添加物品到设定值
                        listBoxCurrentValues​​.Items.Add(项目);
                    }

                    对于(VAR I = listBoxValues​​.Items.Count  -  1; I> = 0;我 - )
                    {
                        如果(listBoxCurrentValues​​.Items.FindByValue(listBoxValues​​.Items [I] .value的)!= NULL)
                        {
                            listBoxValues​​.Items.RemoveAt(ⅰ);
                        }
                    }

                    SortListBox(listBoxCurrentValues​​);
                    打破;
                }
            案removevalue:
                {
                    VAR listBoxValues​​ = e.Item.FindControl(listBoxValues​​)作为列表框;
                    VAR listBoxCurrentValues​​ = e.Item.FindControl(listBoxCurrentValues​​)作为列表框;

                    对于(VAR I = listBoxCurrentValues​​.Items.Count  -  1; I> = 0;我 - )
                    {
                        如果(listBoxCurrentValues​​.Items [I] .Selected)
                        {
                            listBoxValues​​.Items.Add(listBoxCurrentValues​​.Items [I]);
                            listBoxCurrentValues​​.Items.RemoveAt(ⅰ);
                        }
                    }

                    SortListBox(listBoxValues​​);
                    打破;
                }
            案addallvalue:
                {
                    VAR listBoxValues​​ = e.Item.FindControl(listBoxValues​​)作为列表框;
                    VAR listBoxCurrentValues​​ = e.Item.FindControl(listBoxCurrentValues​​)作为列表框;

                    的foreach(在listBoxValues​​.Items列表项项)
                    {
                        //添加物品到设定值
                        listBoxCurrentValues​​.Items.Add(项目);
                    }

                    对于(VAR I = listBoxValues​​.Items.Count  -  1; I> = 0;我 - )
                    {
                        如果(listBoxCurrentValues​​.Items.FindByValue(listBoxValues​​.Items [I] .value的)!= NULL)
                        {
                            listBoxValues​​.Items.RemoveAt(ⅰ);
                        }
                    }

                    SortListBox(listBoxCurrentValues​​);

                    打破;
                }
            案removeallvalue:
                {
                    VAR listBoxValues​​ = e.Item.FindControl(listBoxValues​​)作为列表框;
                    VAR listBoxCurrentValues​​ = e.Item.FindControl(listBoxCurrentValues​​)作为列表框;

                    对于(VAR I = listBoxCurrentValues​​.Items.Count  -  1; I> = 0;我 - )
                    {
                        listBoxValues​​.Items.Add(listBoxCurrentValues​​.Items [I]);
                        listBoxCurrentValues​​.Items.RemoveAt(ⅰ);
                    }

                    SortListBox(listBoxValues​​);

                    打破;
                }
            案addalldatalistvalue:
                {
                    VAR dataListValues​​ = e.Item.FindControl(DataListValues​​)作为DataList控件;
                    VAR dataListCurrentValues​​ = e.Item.FindControl(CurrentDataListValues​​)作为DataList控件;

                    的foreach(在dataListValues​​.Items的DataListItem项)
                    {
                        IMAGELINK ImageLink的= ImageLinks [ID] [item.ItemIndex]
                        CurrentImageLinks [ID]。新增(IMAGELINK);
                    }

                    对于(VAR I = dataListValues​​.Items.Count  -  1; I> = 0;我 - )
                    {
                        如果(CurrentImageLinks [ID]。载(ImageLinks [ID] [I]))
                        {
                            ImageLinks [ID] .RemoveAt(我);
                        }
                    }

                    dataListValues​​.DataSource = ImageLinks [ID]
                    dataListCurrentValues​​.DataSource = CurrentImageLinks [ID]
                    dataListValues​​.DataBind();
                    dataListCurrentValues​​.DataBind();
                    打破;
                }
            案removealldatalistvalue:
                {
                    VAR dataListValues​​ = e.Item.FindControl(DataListValues​​)作为DataList控件;
                    VAR dataListCurrentValues​​ = e.Item.FindControl(CurrentDataListValues​​)作为DataList控件;

                    对于(VAR I = dataListCurrentValues​​.Items.Count  -  1; I> = 0;我 - )
                    {
                        ImageLinks [ID]。新增(CurrentImageLinks [ID] [I]);
                        CurrentImageLinks [ID] .RemoveAt(我);
                    }

                    dataListValues​​.DataSource = ImageLinks [ID]
                    dataListCurrentValues​​.DataSource = CurrentImageLinks [ID]
                    dataListValues​​.DataBind();
                    dataListCurrentValues​​.DataBind();

                    打破;
                }
        }
    }
 

解决方案

也试试这个:

 控制我=的FindControl(Request.Params.Get(__ EVENTTARGET));
如果(的FindControl(我= Add按钮和放大器;!&安培;我= removeButton和放大器;!&安培;!我= addAllButton和放大器;&安培;!我= removeAllButton)
 {
    如果(的IsPostBack)
        返回;
    如果(String.IsNullOrEmpty(请求[ID]))
    {
        的Response.Redirect(Default.aspx的);
    }
    其他
    {
        LoadData();
    }
 }
 
媒体渠道的 广告投放转化 数据回传API,对接需求怎么写

I'm trying to get an aspx datagrid control to perform a post that results in a partial postback (asynchronous) rather than a full postback. I've added scriptmanager, an update panel, and a content template wrapper and yet it still refreshes the page when i select a data item and click add.

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="True" ></asp:ScriptManager>
 <asp:UpdatePanel ID="upPnlLookup" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True">
        <ContentTemplate>
            <asp:DataGrid ID="ObjectPropertiesDataGrid" CellPadding="5" CellSpacing="5" OnItemCommand="ObjectPropertiesDataGrid_ItemCommand" OnItemDataBound="ObjectPropertiesDataGrid_ItemDataBound" AutoGenerateColumns="False" CssClass="List" DataKeyField="id" runat="server">
              <asp:TemplateColumn>
               <ItemTemplate>
                 <asp:Panel ID="multiValuePanel" Visible="false" runat="server">
                        <table>
                           <tr>
                             <td valign="top">
                                 <asp:Button ID="addButton" CssClass="button" CommandName="AddValue" Width="65px" Text="Add" runat="server"></asp:Button>
                                 <asp:Button ID="addAllButton" CssClass="button" CommandName="AddAllValue" Width="85px" Text="Add All" runat="server"></asp:Button>
                                 <br />
                                <asp:ListBox ID="listBoxValues" Width="250px" CssClass="listbox" SelectionMode="Multiple"  runat="server"></asp:ListBox>
                              </td>
                              <td valign="top">
                                <asp:Button ID="removeButton" CssClass="button" Text="Remove" Width="65px" CommandName="RemoveValue"   runat="server"></asp:Button>
                                <asp:Button ID="removeAllButton" CssClass="button" Text="Remove All" Width="85px" CommandName="RemoveAllValue" runat="server"></asp:Button>
                                  <br />
                               <asp:ListBox ID="listBoxCurrentValues" Width="250px" CssClass="listbox" SelectionMode="Multiple" runat="server"></asp:ListBox>
                              </td>                                         
                             </tr>
                       </table>
               </asp:Panel>
        </ItemTemplate>
  </asp:TemplateColumn>
</asp:DataGrid>
</ContentTemplate>
     <Triggers>
         <asp:AsyncPostBackTrigger ControlID="addButton" EventName="Click" />
         <asp:AsyncPostBackTrigger ControlID="removeButton" EventName="Click" />
         <asp:AsyncPostBackTrigger ControlID="addAllButton" EventName="Click" />
         <asp:AsyncPostBackTrigger ControlID="removeAllButton" EventName="Click" />
     </Triggers>
</asp:UpdatePanel>

Code Behind (snippets/relevant methods):

 protected void Page_Load(object sender, EventArgs e)
    {
        SaveButton.Click += SaveButton_Click;
        btnAddChild.Click += btnAddChild_Click;
        btnAddChildTop.Click += btnAddChildTop_Click;
        DeleteButton.Click += DeleteButton_Click;
        CancelButton.Click += CancelButton_Click;
        CopyButton.Click += CopyButton_Click;
        NewButton.Click += NewButton_Click;
        AddSiteButton.Click += AddSiteButton_Click;
        RemoveSiteButton.Click += RemoveSiteButton_Click;
        ActivateAll.Click += ActivateAll_Click;
        DeactivateAll.Click += DeactivateAll_Click;
        startDateCalender.SelectionChanged += startDateCalender_SelectionChanged;
        endDateCalender.SelectionChanged += endDateCalender_SelectionChanged;
        startDateCalender.Load += startDateCalender_Load;
        endDateCalender.Load += endDateCalender_Load;
        CacheButton.Click += CacheButton_Click;


        if (IsPostBack)
            return;
        if (String.IsNullOrEmpty(Request["id"]))
        {
            Response.Redirect("default.aspx");
        }
        else
        {
            LoadData();
        }
    }

    private void LoadData()
    {
        Properties = ContentProviderFactory.GetContentProvider().GetObjectTypeProperties(CurrentContentObject.Type, false);
        uploadImage.DataSource = DataHelper.GetObjecTypeImageSizes(CurrentContentObject.Type);
        uploadImage.Container = CurrentContentObject;


        foreach (var property in from Property p in Properties
                               let objectProperty = CurrentContentObject.GetProperty(p.Id)
                               where objectProperty == null
                               select p)
        {
            CurrentContentObject.Items.Add(property);
        }

        ObjectPropertiesDataGrid.DataSource = Properties;
        var children = ContentProviderFactory.GetContentProvider().GetContentObjectChildren(CurrentContentObject.Id);

        dgObjectChildren.DataSource = children.Where(c => c.Active);
        dgObjectInactiveChildren.DataSource = children.Where(c => !c.Active);

        dgObjectParents.DataSource = ContentProviderFactory.GetContentProvider().GetContentObjectParents(CurrentContentObject);
        ddlContentTypes.DataSource = ContentProviderFactory.GetContentProvider().GetContentObjectTypes(CurrentContentObject.Type);
        ddlContentTypesTop.DataSource = ContentProviderFactory.GetContentProvider().GetContentObjectTypes(CurrentContentObject.Type);

        SitesListBox.DataSource = ContentProviderFactory.GetContentProvider().GetContentObjectSitesAvailable(CurrentContentObject.Id);
        SetSitesListBox.DataSource = ContentProviderFactory.GetContentProvider().GetContentObjectSites(CurrentContentObject.Id);

        if (CurrentContentObject.Id == 0)
        {
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", "/admin/Contentobjects/ObjectNotFound.aspx");
            Response.End();
        }

        const string DATE_FORMAT = "MM/dd/yyyy";

        if (CurrentContentObject.StartDate.ToString(DATE_FORMAT) != SqlDateTime.MinValue.Value.ToString(DATE_FORMAT))
        {
            startDateTextBox.Text = CurrentContentObject.StartDate.ToShortDateString();
        }
        if (CurrentContentObject.EndDate.ToString(DATE_FORMAT) != SqlDateTime.MaxValue.Value.ToString(DATE_FORMAT))
        {
            endDateTextBox.Text = CurrentContentObject.EndDate.Date.ToShortDateString();
        }

        DataBind();

        //if its an orphan child/child, remove 'add child' button and pulldown
        if (ddlContentTypes.Items.Count == 0)
        {
            btnAddChild.Visible = false;
            ddlContentTypes.Visible = false;
        }
        if (ddlContentTypesTop.Items.Count == 0)
        {
            ddlContentTypesTop.Visible = false;
            btnAddChildTop.Visible = false;
        }

        // Add delete confirmation javascript
        DeleteButton.Attributes["onclick"] = "return confirm_object_delete();";

        RenderTypeHeader();
        RenderBreadcrumb();

        if (CurrentContentObject.ParentId == 0)
        {
            UserInfo.AddToHistory(CurrentContentObject.Id, CurrentContentObject.Name);
        }
        else
        {
            UserInfo.AddToHistory(CurrentContentObject.Parent.Id, CurrentContentObject.Parent.Name);
        }

        startCalenderPanel.Visible = false;
        endCalenderPanel.Visible = false;
    }


        protected void ObjectPropertiesDataGrid_ItemCommand(object sender, DataGridCommandEventArgs e)
    {
        var id = (int)ObjectPropertiesDataGrid.DataKeys[e.Item.ItemIndex];

        switch (e.CommandName.ToLower())
        {
            case "clearimage":
                {
                    // Delete the image (does not physically remove the image but will be replaced if new a new one updates)
                    var imageProperty = e.Item.FindControl("imageProperty") as Image;
                    var tbFileName = e.Item.FindControl("tbFileName") as TextBox;

                    tbFileName.Text = string.Empty;
                    imageProperty.ImageUrl = string.Empty;

                    break;
                }
            case "addvalue":
                {
                    // Adds a property value to the list of properites
                    var listBoxValues = e.Item.FindControl("listBoxValues") as ListBox;
                    var listBoxCurrentValues = e.Item.FindControl("listBoxCurrentValues") as ListBox;

                    foreach(var item in listBoxValues.Items.Cast<ListItem>().Where(item => item.Selected))
                    {
                        // Add item to the set values
                        listBoxCurrentValues.Items.Add(item);
                    }

                    for (var i = listBoxValues.Items.Count - 1; i >= 0; i--)
                    {
                        if (listBoxCurrentValues.Items.FindByValue(listBoxValues.Items[i].Value) != null)
                        {
                            listBoxValues.Items.RemoveAt(i);
                        }
                    }

                    SortListBox(listBoxCurrentValues);
                    break;
                }
            case "removevalue":
                {
                    var listBoxValues = e.Item.FindControl("listBoxValues") as ListBox;
                    var listBoxCurrentValues = e.Item.FindControl("listBoxCurrentValues") as ListBox;

                    for(var i = listBoxCurrentValues.Items.Count - 1; i >= 0; i--)
                    {
                        if(listBoxCurrentValues.Items[i].Selected)
                        {
                            listBoxValues.Items.Add(listBoxCurrentValues.Items[i]);
                            listBoxCurrentValues.Items.RemoveAt(i);
                        }
                    }

                    SortListBox(listBoxValues);
                    break;
                }
            case "addallvalue":
                {
                    var listBoxValues = e.Item.FindControl("listBoxValues") as ListBox;
                    var listBoxCurrentValues = e.Item.FindControl("listBoxCurrentValues") as ListBox;

                    foreach(ListItem item in listBoxValues.Items)
                    {
                        // Add item to the set values
                        listBoxCurrentValues.Items.Add(item);
                    }

                    for(var i = listBoxValues.Items.Count - 1; i >= 0; i--)
                    {
                        if(listBoxCurrentValues.Items.FindByValue(listBoxValues.Items[i].Value) != null)
                        {
                            listBoxValues.Items.RemoveAt(i);
                        }
                    }

                    SortListBox(listBoxCurrentValues);

                    break;
                }
            case "removeallvalue":
                {
                    var listBoxValues = e.Item.FindControl("listBoxValues") as ListBox;
                    var listBoxCurrentValues = e.Item.FindControl("listBoxCurrentValues") as ListBox;

                    for (var i = listBoxCurrentValues.Items.Count - 1; i >= 0; i--)
                    {
                        listBoxValues.Items.Add(listBoxCurrentValues.Items[i]);
                        listBoxCurrentValues.Items.RemoveAt(i);
                    }

                    SortListBox(listBoxValues);

                    break;
                }
            case "addalldatalistvalue":
                {
                    var dataListValues = e.Item.FindControl("DataListValues") as DataList;
                    var dataListCurrentValues = e.Item.FindControl("CurrentDataListValues") as DataList;

                    foreach (DataListItem item in dataListValues.Items)
                    {
                        ImageLink imageLink = ImageLinks[id][item.ItemIndex];
                        CurrentImageLinks[id].Add(imageLink);
                    }

                    for (var i = dataListValues.Items.Count - 1; i >= 0; i--)
                    {
                        if (CurrentImageLinks[id].Contains(ImageLinks[id][i]))
                        {
                            ImageLinks[id].RemoveAt(i);
                        }
                    }

                    dataListValues.DataSource = ImageLinks[id];
                    dataListCurrentValues.DataSource = CurrentImageLinks[id];
                    dataListValues.DataBind();
                    dataListCurrentValues.DataBind();
                    break;
                }
            case "removealldatalistvalue":
                {
                    var dataListValues = e.Item.FindControl("DataListValues") as DataList;
                    var dataListCurrentValues = e.Item.FindControl("CurrentDataListValues") as DataList;

                    for (var i = dataListCurrentValues.Items.Count - 1; i >= 0; i--)
                    {
                        ImageLinks[id].Add(CurrentImageLinks[id][i]);
                        CurrentImageLinks[id].RemoveAt(i);
                    }

                    dataListValues.DataSource = ImageLinks[id];
                    dataListCurrentValues.DataSource = CurrentImageLinks[id];
                    dataListValues.DataBind();
                    dataListCurrentValues.DataBind();

                    break;
                }
        }
    }

解决方案

also try this :

Control me = FindControl(Request.Params.Get("__EVENTTARGET"));
if(FindControl(me!=addButton && me!=removeButton && me!=addAllButton && me!=removeAllButton)
 {
    if (IsPostBack)
        return;
    if (String.IsNullOrEmpty(Request["id"]))
    {
        Response.Redirect("default.aspx");
    }
    else
    {
        LoadData();
    }
 }