Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 动态添加的控件不执行回发_Asp.net_Vb.net_Web Controls - Fatal编程技术网

Asp.net 动态添加的控件不执行回发

Asp.net 动态添加的控件不执行回发,asp.net,vb.net,web-controls,Asp.net,Vb.net,Web Controls,我正在覆盖网格,添加一些客户特性。其中一个功能是一个下拉列表,用于调整页面大小。我正在使用客户服务器控件扩展网格,这对于我目前所做的工作非常有用。然而,现在让动态添加的控件进行回发有点困难。启动回发的javascript不存在 Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs) Dim pageSizePanel As New Panel ... Dim countList As List(Of

我正在覆盖网格,添加一些客户特性。其中一个功能是一个下拉列表,用于调整页面大小。我正在使用客户服务器控件扩展网格,这对于我目前所做的工作非常有用。然而,现在让动态添加的控件进行回发有点困难。启动回发的javascript不存在

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
    Dim pageSizePanel As New Panel
    ...
    Dim countList As List(Of String) = GetCountList()
    Dim pageSizeDropdown As New DropDownList()
    pageSizeDropdown.ID = "pageSizeDropdown"
    pageSizeDropdown.DataSource = countList
    pageSizeDropdown.DataBind()

    AddHandler pageSizeDropdown.SelectedIndexChanged, _
               AddressOf HandlePageSizeChange

    pageSizePanel.Controls.Add(pageSizeDropdown)
    ...
    MyBase.Controls.AddAt(0, pageSizePanel)
    MyBase.OnPreRender(e)
End Sub
HTML是

<select name="tab$grid1Tab$RadGrid1$pageSizeDropdown" 
    id="tab_grid1Tab_RadGrid1_pageSizeDropdown">
        <option selected="selected" value="10">10</option>
        <option value="20">20</option>
        <option value="40">40</option>
        <option value="80">80</option>
        <option value="All">All</option>

    </select>

10
20
40
80
全部的

那么,这是否与我“注射”控件有关?它是否与控件的动态添加有关?

您需要将“AutoPostBack”设置为true,以便下拉列表进行回发。否则,另一个控件将不得不将表单发回(但是,如果发生这种情况,将触发SelectedIndexChanged事件)。

您需要将“AutoPostBack”设置为true,以使下拉列表发回。否则,另一个控件将不得不将表单发回(但是,当发生此情况时,SelectedIndexChanged事件将触发)。

我注意到的第一件事是,您可能缺少以下内容:

pageSizeDropdown.AutoPostBack = true

但我不确定这是否就是它工作所需的全部

我注意到的第一件事是你会错过这一点:

pageSizeDropdown.AutoPostBack = true

但我不确定这是否就是它工作所需的全部内容

我认为需要创建控件pageSizeDropdown,并在页面生命周期的早期连接事件,请参阅。需要在pages LoadComplete事件之前创建动态添加的控件,以便触发其控件事件。

我认为需要创建控件pageSizeDropdown,并在页面生命周期的早期连接事件,请参阅。动态添加的控件需要在pages LoadComplete事件之前创建,以便其控件事件可以触发。

您的看法是正确的。问题的第二部分可能是因为一旦回发到达服务器,如果在重建页面时该控件不存在(即,构建数据网格的代码尚未运行),那么它可能不一定知道如何处理该控件。我会尝试在页面init event中构建网格,但这并不是全部。问题的第二部分可能是因为一旦回发到达服务器,如果在重建页面时该控件不存在(即,构建数据网格的代码尚未运行),那么它可能不一定知道如何处理该控件。我会尝试在page init事件中构建网格