Gridview/objectDataSource dentro do runat = contêiner do servidor não liga
-
05-07-2019 - |
Pergunta
Eu tenho um pequeno formulário da web com 2 botões de rádio, chamá -los de pickfromlist e entervalue. Quando o PickFromlist é verificado, quero mostrar um GridView que eu configurei para ligar a um objectDataSource. Quando o Entervelue é verificado, quero que o Gridview desapareça.
Este formulário é apresentado usando uma tabela e deseja ocultar/mostrar as linhas apropriadas com base nos dados apropriados e na entrada do usuário.
Infelizmente, o GridView não se liga quando a linha TrpickFromlist2 especifica o ID e os atributos RUNAT = "Server". Se eu remover o ID e RUNAT = "Server" da linha TRPICKFROMLIST2, ele se liga com sucesso.
Alguma ideia?
<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" />
...
Solução
Por que você não mostra/esconde o TRS com JavaScript? Dessa forma, você não terá esse problema e terá uma interface do usuário muito mais responsiva.
Com jQuery:
$ ('. ClassOnsShowRadioButton'). Clique (function () {$ ('. trtashow'). Show (); $ ('. trtohide'). hide ();});
Obviamente, faça o contrário para o outro botão de rádio.
Outras dicas
Acabei implementando Controle de campo de campo de Wilco Bauwer Para resolver esse problema. Não é uma solução perfeita, pois o controle surge o valor do índice da linha selecionado, em vez do (s) valor (s) da chave de dados selecionados; No entanto, funcionou bem.
Hmm .. não tenho muita certeza, mas algo que me levou algumas vezes é ter os Autowireevents configurados como false, está no topo na seção <% página /%>. Desculpe se não ajuda, mas algo irritante e insignificante como esse é provavelmente o problema.
Se os Autowireevents responderam que Joe sugeriu que não é o problema, você também pode tentar remover o Runat = servidor das tags TR e enrolá -las com os espaços reservados e usar os espaços reservados para controlar a visibilidade. (Observe, não use painéis, pois isso resultará em HTML inválido)
EU notei o mesmo comportamento Com um FormView dentro de uma tag TR com runat = "servidor"
Algum motivo específico que você está usando uma tabela para layout? Tente tirar todos os seus controles da tabela e faça com que os botões de rádio apenas tornem o Gridview real visível/invisível.