代码之家  ›  专栏  ›  技术社区  ›  user6658617

异步回发后更改控件位置

  •  0
  • user6658617  · 技术社区  · 8 年前

    我在页面的更新面板中有一个面板 面板的visible默认为false,在异步回发更改为true后 我的问题是面板回发位置更改为页面顶部后 这是我的密码

    <asp:Label runat="server" ID="lbl_caption_upload" Text="caption" CssClass="label"></asp:Label>
    <asp:TextBox runat="server" ID="txt_caption_upload" TextMode="MultiLine" CssClass="textbox"></asp:TextBox>
    <asp:RadioButtonList runat="server" ID="radio_view_upload" OnSelectedIndexChanged="radio_view_upload_SelectedIndexChanged" AutoPostBack="True">
       <asp:ListItem text="custom"></asp:ListItem>
       <asp:ListItem text="public"></asp:ListItem></asp:RadioButtonList>
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="radio_view_upload" />
                    </Triggers>
                    <ContentTemplate>
                        <asp:Panel runat="server" ID="placeholder_panel" Visible="false" CssClass="hide">
                            <tr>
                                <td>
                                    <asp:Label runat="server" ID="lbl_genre_upload" Text="genre" CssClass="label"></asp:Label>
                                </td>
                                <td>
                                    <asp:CheckBoxList runat="server" ID="check_genre_upload" DataTextField="Title" DataValueField="ID" RepeatColumns="7" RepeatDirection="Horizontal" DataSourceID="datasource_genre_upload"></asp:CheckBoxList>
                                    <asp:LinqDataSource ID="datasource_genre_upload" runat="server" ContextTypeName="Video_Hosting.L2SDataContext" EntityTypeName="" Select="new (Title, ID)" TableName="Genres" OrderBy="ID">
                                    </asp:LinqDataSource>
                                </td>
                            </tr>
                        </asp:Panel>
                    </ContentTemplate>
                </asp:UpdatePanel>
    

    这是选择索引更改的代码

    protected void radio_view_upload_SelectedIndexChanged(object sender, EventArgs e)
        { 
            if (radio_view_upload.SelectedIndex == 1)
            {
                placeholder_panel.Visible = true;
            } 
            else
            {
                placeholder_panel.Visible = false;
            }
        }
    

    面板回发后位置更改为第一个标签之前

    谢谢你的回答

    1 回复  |  直到 8 年前
        1
  •  0
  •   VDWWD    8 年前

    这条线的问题是:

    if (radio_view_upload.SelectedIndex == 2)
    

    radio_view_upload RadioButtonList只有2个选项,因此if语句将始终转到Else部分。只有SelectedIndex 0和1可用。

    您还可以使用 if (radio_view_upload.SelectedValue == "myValue") ,但要使其工作,您必须添加一个 value="myValue" 到ListItems。

    更新

    在…内 <ContentTemplate> 你有一个 <tr> <td> </td> </tr> 不匹配 <table> </table> 标签。可能这些标记在UpdatePanel之外,在代码段中不可见。您应该在UpdatePanel中添加/移动这些内容。

    更新2

        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <br />
        <br />
        <asp:Label runat="server" ID="lbl_caption_upload" Text="caption" CssClass="label"></asp:Label>
        <br />
        <asp:TextBox runat="server" ID="txt_caption_upload" TextMode="MultiLine" CssClass="textbox"></asp:TextBox>
        <br />
        <asp:RadioButtonList runat="server" ID="radio_view_upload" OnSelectedIndexChanged="radio_view_upload_SelectedIndexChanged" AutoPostBack="True">
            <asp:ListItem Text="custom"></asp:ListItem>
            <asp:ListItem Text="public"></asp:ListItem>
        </asp:RadioButtonList>
        <br />
    
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="radio_view_upload" />
            </Triggers>
            <ContentTemplate>
                <asp:Panel runat="server" ID="placeholder_panel" Visible="true" CssClass="hide">
                    <asp:Label runat="server" ID="lbl_genre_upload" Text="genre" CssClass="label"></asp:Label>
                    <br />
                    <asp:CheckBoxList runat="server" ID="check_genre_upload" DataTextField="Title" DataValueField="ID" RepeatColumns="7" RepeatDirection="Horizontal"></asp:CheckBoxList>
                </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>