runat = server容器内的GridView / ObjectDataSource不绑定

时间:2008-10-30 17:44:33

标签: asp.net data-binding gridview objectdatasource

我有一个带有2个单选按钮的小型网页表单,称之为PickFromList和EnterValue。当选中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" />
        ...

6 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

使用jQuery:

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

I noticed the same behavior在TR标记内部使用FormView,其中包含runat =“server”

答案 5 :(得分:0)

您使用表格进行布局有什么特别的原因吗?尝试将所有控件从表中取出,然后使单选按钮使实际的GridView可见/不可见。