Eu acidentalmente descobri uma diferença entre 2.0 e 1.1 e anotei para lembrar a todos.
Trata-se de gerar código para a primeira página. Sabemos que os controles do servidor asp.net serão eventualmente interpretados nos scripts javascript front-end e nos códigos HTML. Por exemplo, o controle "datagrid" será interpretado no rótulo "tabela" e o controle "CheckBox". em "<input type='checkbox'... …"Rótulo. Tanto o asp.net2.0 quanto o asp.net1.1 possuem esse mecanismo, portanto, muitas vezes podemos usar esse mecanismo para escrever alguns scripts javascript na recepção para operar as tags html geradas após essas interpretações e para chamar alguns eventos. Não sei se você usa esse método com frequência, mas eu uso esse método com frequência e nunca me canso dele.
Um incidente acidental encontrou um problema. Copiei diretamente alguns scripts js em 1.1 e os usei em projetos em 2.0. Encontrei erros e erros de script que não consegui descobrir. , o segredo foi descoberto. No asp.net, após a interpretação do controle do servidor na coluna do modelo datagrid, o rótulo gerado gerará um novo ID com base no ID do controle do servidor original.
Por exemplo (em asp.net1.1), o controle CheckBox é usado na coluna de modelo do controle DataGrid:
<asp:datagrid id="myDataGrid" runat="server" AutoGenerateColumns="False" Height="100%" Width="100%"
EnableViewState="falso">
<AlternatingItemStyle CssClass="list_bai"></AlternatingItemStyle>
<ItemStyle CssClass="list_lan"></ItemStyle>
<HeaderStyle CssClass="list_1"></HeaderStyle>
<Colunas>
<asp:BoundColumn DataField="COLOR_ID" HeaderStyle-CssClass="disTd" ItemStyle-CssClass="disTd"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderText="Selecionar<input type='checkbox' id='' onclick='doSelectAll();' title='Selecionar tudo'>">
<HeaderStyle HorizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" CssClass="list_td"></ItemStyle>
<ItemTemplate>
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn DataNavigateUrlField="COLOR_ID" DataNavigateUrlFormatString="InfoCOLOR.aspx?id={0}&flag=0"
DataTextField="COLOR_NAME" HeaderText="Nome da cor">
<HeaderStyle HorizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" CssClass="list_td"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="COLOR_CODE" HeaderText="Codificação HTML colorida">
<HeaderStyle HorizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" CssClass="list_td"></ItemStyle>
</asp:BoundColumn>
</Colunas>
</asp:datagrid>
Depois de explicar o html na recepção, fica:
<table cellpacing="0" regras="all" border="1" id="myDataGrid" style="height:100%;width:100%;border-collapse:collapse;">
<tr class="list_1">
<td class="disTd"> </td>
<td class="list_1" align="Center">Selecionar<input type='checkbox' id='' onclick='doSelectAll();' title='Selecionar tudo'></td>
<td class="list_1" align="Center">Nome da cor</td>
<td class="list_1" align="Center">Codificação HTML colorida</td>
</tr>
<tr class="list_lan">
<td class="disTd">16</td>
<td class="list_td" align="Center"> <input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" /></td>
<td class="list_td" align="Center"><a href="InfoCOLOR.aspx?id=16&flag=0">213`</a></td>
<td class="list_td" alinhamento="Center">123123</td>
</tr>
</tabela>
Podemos ver que o controle DataGrid se tornou um rótulo de tabela, o id permanece inalterado e o
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
original
Torna-se
<input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" />
O "myDataGrid__ctl2_CheckBox1" aqui é adicionado automaticamente pelo asp.net. Ele é gerado combinando o id do DataGrid onde está localizado, seu próprio id e a linha onde os dados estão vinculados.
Os resultados acima foram gerados em asp.net1.1. O id gerado por 2.0 foi alterado. O id não é myDataGrid__ctl2_CheckBox1, mas myDataGrid:_ctl2:CheckBox1, mas o atributo name permanece inalterado. Apenas torne o id e o nome consistentes. Na verdade, deveria ser assim. Talvez este seja um dos aspectos irracionais do dotnet1.1.
Uma pequena descoberta, espero que ajude a todos.