我有一个带有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" />
...
答案 0 :(得分:2)
我最终实施Wilco Bauwer's RowSelectorField control来解决这个问题。这不是一个完美的解决方案,因为控件会显示所选行的索引值而不是所选的数据键值;然而,它运作良好。
答案 1 :(得分:1)
为什么不用javascript显示/隐藏TR?这样你就不会遇到这个问题而且你会有一个响应更快的UI。
使用jQuery:
$( 'classOnShowRadioButton')。点击(函数(){ $( 'trToShow')显示()。 $( 'trToHide。')隐藏()。 });
然后显然对另一个单选按钮反向。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果AutoWireEvents回答Joe建议不是问题,您也可以尝试从tr标签中删除runat = server,而是用占位符包装它们并使用占位符来控制可见性。 (注意,不要使用面板,因为它会导致无效的html)
答案 4 :(得分:0)
I noticed the same behavior在TR标记内部使用FormView,其中包含runat =“server”
答案 5 :(得分:0)
您使用表格进行布局有什么特别的原因吗?尝试将所有控件从表中取出,然后使单选按钮使实际的GridView可见/不可见。