0

これから始めるかどうかははっきりとはわかりませんので、さらに詳しい情報が必要な場合はお問い合わせください。

.aspxページがあります。その上にasp:repeaterがあり、そのリピーターにはasp:gridviewがあります。

各リピーターは、異なる製品の詳細を表示します。そのリピーターの各グリッドビューには、名前、価格、何とか何とかを表示するx個の列があります。列の数はさまざまですが、最初は4つあり、常に同じです。

コードビハインドで取得した4つの列の名前を、すべての外側の上部にあるページの「選択」(ドロップダウン)に追加しました。

アイデアは、これらの4つの列のうち、一度に1つだけが表示され、ドロップダウンで1つが選択されるというものです。

私の上司が「非常に柔軟な人」であり、ページの構造、つまりリピーターとグリッドビューを変更したくないと仮定し、いくつかのjs / jquery(クライアント側-つまり、 db。-すべての情報はページ上にあり、クライアントに表示または非表示になります)。

私が試したこと...

var singleValues = document.getElementById('<%= deliveryoption.ClientID %>').value;

ドロップダウンから値を取得します-この部分は機能します。注:この値を使用して、列見出し('th'タグ内)と比較します。

注:テーブル全体にgridDetailsのcssクラスがあり、列はtdで、見出しはthです-明らかに....:P

今....以下はうまくいくようです


$('.gridDetails td').click(function () {

var singleValues = document.getElementById('<%= deliveryoption.ClientID %>').value;

var col = $(this).prevAll().length; //$(this).index; // does the same...?

var header = $(this).parents('table').find('th:nth-child(' + (col + 1) + ')');

alert(header.text());  // for testing ....

var rowIndex = col + 1;

if (header.text() == singleValues) {

$('td:nth-child(' + rowIndex + '), th:nth-child(' + rowIndex + ')').hide();

}

問題は、それがclickテーブルのイベントにあるということです。

onchangeドロップダウンのイベントにこれを変更するにはどうすればよいですか。私はドロップダウンにバインドするためにコードでそれを行う「方法」を知っています笑、つまりthis、コード内の参照はドロップダウンであり、列などが見つかりません...。

明確にするために:-外側の周りにrunat = serverdivがあります-次にリピーターがあります-次にリピーターの内側に1つ以上のグリッドビューがあります

私はjqueryで読んだこと.proxy()がありますが、この場合はこれが役に立たないと思います...

私はそれだと思います...私が何かを逃したかどうか私に知らせてください...

前もって感謝します

乾杯ロビン

編集

ページ

<div>
<select name="deliveryoption" id="deliveryoption" runat="server" onchange="test()">

</select>
</div>
<div id="outsidediv" runat="server" style="margin: 5px">
<asp:Repeater ID="SizeSelectionRepeater" runat="server" OnItemDataBound="SizeSelectionRepeater_ItemDataBound">
    <ItemTemplate>
        <table cellpadding="3">
            <tr>
                <td>
                    <asp:Label ID="LabelProductCode" runat="server"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="LabelPackageQuantity" runat="server"></asp:Label>
                </td>
            </tr>
        </table>
        <asp:Panel ID="SizeSelectionPanel" runat="server">
        </asp:Panel>
        <asp:GridView ID="SizeSelectionGridView" runat="server" CssClass="gridDetails" OnRowDataBound="SizeSelectionGridView_RowDataBound"
            AutoGenerateColumns="false" Width="100%">
            <Columns>
                <asp:TemplateField HeaderText="Price">
                    <ItemTemplate>
                        <div style="vertical-align: middle;">
                            <asp:Label ID="PriceLabelSpecial" runat="server" Width="30%" Style="display: inline;"></asp:Label>
                            <asp:Label ID="PriceLabel" runat="server"></asp:Label>
                        </div>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Add to Cart">
                    <ItemTemplate>
                        <table width="300px" style="border-style: none;">
                            <tr>
                                <td valign="middle" style="border-style: none;">
                                    <asp:LinkButton ID="ButtonAdd" runat="server" Width="120px" Height="22px" 
                                    CssClass="buynow">Buy now</asp:LinkButton>
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <br />
    </ItemTemplate>
</asp:Repeater>
</div>
4

1 に答える 1

0

私が理解しているように、次のようなことができます:

$('#<%= deliveryoption.ClientID %>').change(function(){
    var singleValues = $(this).val();
    var thOfColumnThatShouldBeHidden = $(".gridDetails th:contains('" + singleValues + "')");
})

あなたがすでに持っている他のすべて。これで、現在と同じ方法で見つけることができますが、col使用せずに、必要な TH を見つけるには、セレクターを使用していますthOfColumnThatShouldBeHidden$(this):contains()

于 2012-09-14T22:48:40.020 に答える