我有一个带有2个单选按钮的小型网页表单,称之为PickFromList和EnterValue。当选中PickFromList时,我想显示一个我已配置为绑定到ObjectDataSource的GridView。当选中EnterValue时,我希望GridView消失。

此表单使用表格进行布局,并希望根据适当的数据和用户输入隐藏/显示相应的行。

不幸的是,当trPickFromList2行指定id并且runat = <!>“server <!>”时,GridView不会绑定;属性。如果我删除id并且runat = <!>“; server <!>”;从trPickFromList2行成功绑定。

有什么想法吗?

<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" />
        ...
有帮助吗?

解决方案

为什么不用javascript显示/隐藏TR?这样你就不会遇到这个问题而且你会有一个响应更快的UI。

使用jQuery:

$( 'classOnShowRadioButton')。点击(函数(){     $( 'trToShow')显示()。     $( 'trToHide。')隐藏()。 });

然后显然对另一个单选按钮反向。

其他提示

我最终实施了 Wilco Bauwer的RowSelectorField控件来解决此问题。这不是一个完美的解决方案,因为控件会显示所选行的索引值而不是所选的数据键值;然而,它运作良好。

嗯......不太确定,但是有几次让我感到兴奋的是将AutoWireEvents设置为false,它位于<!> lt;%page /%<!> gt的顶部;部分。对不起,如果它没有帮助,但是这样的烦人和无足轻重的事情就是问题。

如果AutoWireEvents回答Joe建议不是问题,您也可以尝试从tr标签中删除runat = server,而是用占位符包装它们并使用占位符来控制可见性。 (注意,不要使用面板,因为它会导致无效的html)

scroll top