0

パネルの可視の true/false オプションを変更して、表示/非表示にしたい ASP パネル内に展開可能な asp グリッドを追加したいと考えています。

asp:Panel ID="test1" を削除すると、サイトが開き、拡張可能なグリッドビューが問題なく機能します。

パネル内にコードを追加すると、エラー メッセージが表示されます。

Expression expected.
Source Error:
Line 46: <a href="JavaScript:divexpandcollapse('div<%# Eval(&quot;reporting_group&quot;) %>');">

なぜこれが起こったのか、そしてそれを回避する方法を誰かが説明できるでしょうか。同じ結果で Ajax TabContainer も試しました。

以下のコードを参照してください。

<script language="javascript" type="text/javascript">
    function divexpandcollapse(divname) {
        var div = document.getElementById(divname);
        var img = document.getElementById('img' + divname);
        if (div.style.display == "none") {
            div.style.display = "block"; img.src = "Images/Icons/minus.jpg";
        } else { div.style.display = "none"; img.src = "Images/Icons/plus.jpg"; }
    }</script>

<asp:Panel ID="test1" runat="server">
    Panel 1<br />
    <asp:UpdatePanel ID="UP_TabContainer" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:GridView ID="GV_SL" runat="server" AutoGenerateColumns="False" 
                DataSourceID="SQL_Weekly" OnRowCommand="GV_SL_RowCommand" 
                OnRowDataBound="gvUserInfo_RowDataBound">
                <Columns>
                    <asp:TemplateField ItemStyle-Width="50px">
                        <ItemTemplate>
                            <a href="JavaScript:divexpandcollapse('div<%# Eval(&quot;reporting_group&quot;) %>');">
                            <img id="imgdiv<%# Eval("reporting_group") %>" width="15px" border="0" src="Images/Icons/plus.jpg" />
                            </a>
                        </ItemTemplate><ItemStyle Width="40px" />
                    </asp:TemplateField>
                    <asp:BoundField DataField="name" HeaderText="Group" SortExpression="name" />
                    <asp:BoundField DataField="ASL" HeaderText="SL% Act" ReadOnly="True" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <tr>
                                <td >
                                    <div ID='div<%# Eval("reporting_group") %>' style="display: none; position: relative;
                                    left: 15px; overflow: auto">
                                        <asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false">
                                            <Columns>
                                                <asp:BoundField DataField="Metric" 
                                                    HeaderText=" "/> 
                                                <asp:BoundField DataField="Actual" HeaderText="Actual" />
                                            </Columns>
                                        </asp:GridView> 
                                    </div>
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <br />
            <asp:SqlDataSource ID="SQL_Weekly" runat="server" 
                ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand=" SQL QUERY" <SelectParameters> 
                </SelectParameters>
            </asp:SqlDataSource>
            <asp:SqlDataSource ID="SQL_Group" runat="server" 
                ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand=" SQL QUERY" ></asp:SqlDataSource>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="DateSelection" 
                EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>
    <br />
</asp:Panel>
4

2 に答える 2

1

リンクが JavaScript をトリガーする方法を次のように変更してみてください。

<a href="#" onclick="divexpandcollapse('div<%# Eval("reporting_group") %>');return false;">
    <img id="imgdiv<%# Eval("reporting_group") %>" width="15px" border="0" src="Images/Icons/plus.jpg" />
</a>

:

  • "の代わりに使用&quot;(コンパイルエラーを修正)
  • リンクhrefをに設定します"#"
  • onclick イベントを使用して JavaScript を実行する (推奨)

.

于 2013-10-08T13:42:13.177 に答える
0

更新パネルとクライアント側の JavaScript が競合していると思います。

更新パネルを使用している場合は、単に<a hrefasp:LinkBut​​ton コントロールに変更して、そのオブジェクトのクリック イベントで表示を切り替えてみませんか。

于 2013-10-08T13:45:50.650 に答える