0

i have a panel within an update panel in my page visible of panel is false by default and after asynchronous postback changes to true my problem is after postback location of panel change to top of page here is my code

<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>

and here is code for slectedindex change

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;
        }
    }

after postback location of panel change to before first label

thanks for all of your answers

1 Answers1

0

This line is the problem:

if (radio_view_upload.SelectedIndex == 2)

Your radio_view_upload RadioButtonList only has 2 choices, so your if-statement will always go to the Else part. Only SelectedIndex 0 and 1 are available.

In most programming languages the first item in an array, collection, list etc will have 0 as starting index.

You could also use if (radio_view_upload.SelectedValue == "myValue"), but for this to work you have to add a value="myValue" to the ListItems.

UPDATE

Inside <ContentTemplate> you have a <tr> <td> and a </td> </tr> without matching <table> </table> tags. Maybe those tags are outside the UpdatePanel and not visible in your snippet. You should add/move those inside the UpdatePanel.

UPDATE 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>
VDWWD
  • 35,079
  • 22
  • 62
  • 79
  • Thanks for your answer but this is not my problem. .. My problem is changing location of panel ... Visiblity of panel is changed to true but location of it change to top of page – user6658617 Aug 11 '16 at 20:26
  • Thanks again i remove those tag but same problem ... When full postback occured location is true but in asynchronous postback location is changed ... I have a fileupload control that after full postback loose its file ... Only way to keep file is asynchronous postback... Session is not good idea for keep file – user6658617 Aug 11 '16 at 20:40
  • I tested your code and it all works as it should with those 2 fixes I mentioned. The only thing i cannot test is the content of `datasource_genre_upload`. Maybe there is something in there that causes the problem. Could you post (part of) the content of datasource_genre_upload? – VDWWD Aug 11 '16 at 20:48
  • Yeah datasource contain genre of movies like comedy etc – user6658617 Aug 11 '16 at 20:51
  • And you cannot prevent the FileUpload from losing the file after a full postback. You have to store the file server side if you want to keep it. See http://stackoverflow.com/a/18656681/5836671 – VDWWD Aug 11 '16 at 20:53
  • No no no i save uploaded file after botton upload click ... But before save file i want to have some details about file like genre etc ... This require postback that cause loosing value of fileupload – user6658617 Aug 11 '16 at 20:56
  • I sort know what you mean. But that is possible by using your snippet. I've edited it a litte. But the filename is preserved when `radio_view_upload` is changed. – VDWWD Aug 11 '16 at 21:09
  • Solved i used table tag in my page i change all table, tr and td tags to asp: table tags and problem solved – user6658617 Aug 11 '16 at 21:15
  • Good to hear. Happy programming! – VDWWD Aug 11 '16 at 21:16