Gridview в ретрансляторе отображается, когда я запускаю postback
У меня есть dropdownlist (ddl) и repeater(rptPayment).
на
protected void ddl_SelectedIndexChanged(object sender, EventArgs e) { BindRepeater(); }
Успешно свяжите ретранслятор.
В ретрансляторе, когда я скрываю и показываю gridview on, флажок установлен.
Это работает.
function hideshowGV(itemId, itemIndex) { if (document.getElementById("ContentPlaceHolder1_rptPayment_chkComm_" + itemIndex).checked == true) { document.getElementById(itemId + "_gvPayment_" + itemIndex).style.display = 'block'; } else { document.getElementById(itemId + "_gvPayment_" + itemIndex).style.display = 'none'; } }
Но когда я запускаю другой postback, он (gridview) снова отображается, даже флажок не установлен.
как на
ddlPaymentMode_SelectedIndexChanged
Что я уже пробовал:
<table align="center" style="width: 100%"> <tr> <td> <asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged" Width="200px"> </asp:DropDownList> </td> </tr> <tr> <td colspan="6" class="tdcontrol"> <asp:UpdatePanel ID="UpdatePanel6" runat="server"> <ContentTemplate> <asp:Panel ID="panelrpt" runat="server" ScrollBars="Auto" Width="100%"> <asp:Repeater ID="rptPayment" runat="server" OnItemDataBound="rptPayment_ItemDataBound"> <ItemTemplate> <asp:CheckBox ID="chkComm" runat="server" Checked="true" Text='<%#Eval("CommodityName")%>' ForeColor="White" Font-Bold="true" /> <asp:GridView ID="gvPayment" runat="server" AutoGenerateColumns="false" ShowFooter="true" OnRowDataBound="gvPayment_RowDataBound"> <Columns> <asp:TemplateField HeaderText="employee" Visible="false"> <ItemTemplate> <asp:Literal runat="server" Text='<%#Eval("employeeId")%>'></asp:Literal> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ItemTemplate> </asp:Repeater> </asp:Panel> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddl" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> </td> </tr> <tr> <td> <asp:UpdatePanel ID="UpdatePanel24" runat="server"> <ContentTemplate> <asp:DropDownList ID="ddlPaymentMode" AutoPostBack="true" runat="server" Width="200px" OnSelectedIndexChanged="ddlPaymentMode_SelectedIndexChanged"> </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel></td> </tr> </table>
F-ES Sitecore
Инфраструктура .net не знает, что вы показывали или скрывали элементы с помощью javascript, поэтому, когда страница выполняет обратную передачу, она отображает ее так, как она думает, что она должна отображаться. Если вы хотите сделать это, у вас может быть скрытая переменная на странице, и когда вы скрываете элемент, вы также можете обновить скрытую переменную до чего-то, что указывает, что было скрыто. При обратной передаче ваш .net-код может посмотреть на скрытую переменную и узнать, что нужно показать или скрыть на стороне сервера. Также имейте в виду, что если вы укажете что-то как Visible = false в коде сервера, оно никогда не будет отправлено клиенту, поэтому вы не можете показать его через js, вам необходимо изменить сетку, чтобы иметь соответствующий стиль "отображения". of block или none вместо этого.
Graeme_Grant
какой javascript?
F-ES Sitecore
hideshowGV
Graeme_Grant
истинный