Vb.net 在用户看到它所在的updatepanel后,在可编辑的gridview中显示后进行更新

Vb.net 在用户看到它所在的updatepanel后,在可编辑的gridview中显示后进行更新,vb.net,gridview,updatepanel,Vb.net,Gridview,Updatepanel,几天来我一直在搜索论坛,试图解决这个问题,但我被卡住了。如果这是我错过的简单而明显的事情,我表示歉意。虽然我发现了与我的问题类似的帖子,但它们并不完全相同 以下是我的Web应用部分功能的概述: 显示一个简单的asp:dropdownlist 当用户选择一个值时,相应的updatepanel将变为可见(这些更新面板在后面的页面加载代码中可见=false),显示一个可编辑的gridview: protectedsub-DropDownList1\u SelectedIndexChanged(发送方作

几天来我一直在搜索论坛,试图解决这个问题,但我被卡住了。如果这是我错过的简单而明显的事情,我表示歉意。虽然我发现了与我的问题类似的帖子,但它们并不完全相同

以下是我的Web应用部分功能的概述:

  • 显示一个简单的asp:dropdownlist
  • 当用户选择一个值时,相应的updatepanel将变为可见(这些更新面板在后面的页面加载代码中可见=false),显示一个可编辑的gridview:

    protectedsub-DropDownList1\u SelectedIndexChanged(发送方作为对象,e作为事件参数)
    如果DropDownList1.SelectedItem.Value“0”,则
    如果DropDownList1.SelectedValue=“激活或停用用户”,则
    UpdatePanel1.Visible=True
    如果结束
    …

    我还尝试重新绑定gridview和数据源:

        If Not (IsPostBack) Then
           SqlDataSource2.DataBind()
           GridView3.DataBind()
        End If
    
    我还尝试在页面标记中添加EnableEventValidation=“false”。发生的情况是,我现在可以按Edit链接,但UpdatePanel会消失(根据页面加载),然后当我从下拉列表中选择值时,它会再次出现,行处于编辑模式,但会出现空白,而不是行的当前值

    我还尝试在gridview所在的同一个updatePanel之外定义gridview的数据源,但没有任何区别

    只是确认一下,如果我没有在页面加载代码中设置UpdatePanels visible=false,这样用户就可以看到它们,那么GridView可以很好地更新行。这使我认为问题在于无状态,好像我理解正确一样,当按下编辑链接时,再次调用页面加载代码,不再保留dropdownlistvalue,从而使gridview所在的updatepanel再次可见=false

    那么,有没有其他方法可以根据dropdownlist选择使UpdatePanel隐藏起来,而dropdownlist选择不是Page_Load?这可能是解决办法所在吗

    还是在编辑链接(页面加载调用)完成后,让dropdownlist选择值保持不变的另一种方法


    我认为我的思路是正确的,但如果能得到一些指导,那将非常有帮助。

    很遗憾,没有任何后续行动。。。 [ArgumentException: Invalid postback or callback argument. Event validation is enabled using in configuration or in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.] System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +144 System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +111 System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +32 System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9643314 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17929"`
    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
    
        'override (page) Render and loop over the GridView Rows
        Dim row As GridViewRow
        For Each row In GridView3.Rows
            If (row.RowType = DataControlRowType.DataRow) Then        
                Page.ClientScript.RegisterForEventValidation(New System.Web.UI.PostBackOptions(Me.GridView3, "Select$" + row.RowIndex.ToString()))
                Page.ClientScript.RegisterForEventValidation(New System.Web.UI.PostBackOptions(Me.GridView3, "Update$" + row.RowIndex.ToString()))          
            End If   
        Next
    
        MyBase.Render(writer)
    
        If Not (IsPostBack) Then
           SqlDataSource2.DataBind()
           GridView3.DataBind()
        End If