1

PickFromList と EnterValue という 2 つのラジオ ボタンを備えた小さな Web フォームがあります。PickFromList がチェックされている場合、ObjectDataSource にバインドするように構成した GridView を表示したいと考えています。EnterValue がチェックされると、GridView が消えます。

このフォームはテーブルを使用してレイアウトされており、適切なデータとユーザー入力に基づいて適切な行を非表示/表示する必要があります。

残念ながら、trPickFromList2 行で id 属性と runat="server" 属性が指定されている場合、GridView はバインドされません。trPickFromList2 行から id と runat="server" を削除すると、正常にバインドされます。

何か案は?

<table id="tblOptions" runat="server">
    <tr id="trPickFromList1" runat="server">
        <td>
            <asp:RadioButton ID="rbFromList" runat="server" GroupName="Selection" 
                Text="Get Data From Existing Item" AutoPostBack="True" 
                oncheckedchanged="rbromList_CheckedChanged" />
        </td>
    </tr>
    <tr id="trPickFromList2" runat="server">
        <td style="padding-left:20px">
            <asp:GridView ID="gvList" runat="server" AutoGenerateColumns="False" 
                DataSourceID="odsList" Width="400px" onrowdatabound="gvList_RowDataBound">
                <Columns>
                    ...
                </Columns>
            </asp:GridView>
        </td>
    </tr>
    <tr id="trEnterValue1" runat="server">
        <td>
            <asp:RadioButton ID="rbEnterValue" runat="server" GroupName="Selection" 
                            Text="Create a New Item"
                            AutoPostBack="True" 
                            oncheckedchanged="rbEntered_CheckedChanged" />
        ...
4

6 に答える 6

2

この問題を解決するために、Wilco Bauwer の RowSelectorField コントロールを実装することになりました。コントロールが選択されたデータのキー値ではなく、選択された行のインデックス値を表示するという点で、これは完全な解決策ではありません。しかし、それはうまくいきました。

于 2008-11-04T13:10:05.697 に答える
1

javascriptでTRを表示/非表示にしないのはなぜですか? そうすれば、この問題は発生せず、はるかに応答性の高い UI が得られます。

jQuery の場合:

$('.classOnShowRadioButton').click(function(){ $('.trToShow').show(); $('.trToHide').hide(); });

次に、明らかに他のラジオボタンに対して逆の操作を行います。

于 2008-10-30T18:44:19.257 に答える
0

レイアウトにテーブルを使用している特別な理由はありますか?テーブルからすべてのコントロールを取り出して、ラジオボタンで実際のGridViewを表示/非表示にします。

于 2008-10-30T20:02:21.550 に答える
0

Joe が提案した AutoWireEvents の回答が問題ではない場合は、tr タグから runat=server を削除し、代わりにそれらをプレースホルダーでラップし、プレースホルダーを使用して可視性を制御することもできます。(パネルは無効な html になるため、使用しないでください)

于 2008-10-30T18:39:13.467 に答える
0

うーん..確かではありませんが、AutoWireEvents が false に設定されていることが何度かありました。これは <% page /%> セクションの上部にあります。役に立たない場合は申し訳ありませんが、そのような厄介で取るに足らない何かが問題の可能性があります。

于 2008-10-30T18:07:08.273 に答える
0

runat="server" を含む TR タグ内の FormView で同じ動作に気付きました

于 2008-10-30T19:17:14.963 に答える