2.0 と 1.1 の違いを偶然発見したので、皆さんに思い出していただくために書き留めました。
フロントページのコードを生成することです。 asp.net サーバー コントロールは最終的にフロントエンド JavaScript スクリプトと HTML コードに解釈されることがわかっています。たとえば、「datagrid」コントロールは「table」ラベルに解釈され、「CheckBox」コントロールは解釈されます。 「<input type='checkbox'... …」ラベルに変換します。 asp.net2.0 と asp.net1.1 の両方にこのメカニズムがあるため、このメカニズムをよく使用して、フロント デスクでいくつかの JavaScript スクリプトを記述し、これらの解釈後に生成された HTML タグを操作したり、いくつかのイベントを呼び出したりすることができます。あなたがこの方法をよく使うかどうかはわかりませんが、私はこの方法をよく使いますが、飽きることはありません。
偶然の出来事で、1.1 でいくつかの js スクリプトを直接コピーし、それを 2.0 で使用したところ、エラーとスクリプト エラーが見つかりました。その後、asp.net2 で生成されたフロントエンド コードを注意深く調べました。 、その秘密が判明しました。 asp.net では、datagrid テンプレート列のサーバー コントロールが解釈された後、生成されたラベルにより、元のサーバー コントロールの ID に基づいて新しい ID が生成されます。
たとえば (asp.net1.1 では)、CheckBox コントロールは DataGrid コントロールのテンプレート列で使用されます。
<asp:datagrid id="myDataGrid" runat="server" AutoGenerateColumns="False" Height="100%" width="100%"
EnableViewState="false">
<AlternatingItemStyle CssClass="list_bai"></AlternatingItemStyle>
<ItemStyle CssClass="list_lan"></ItemStyle>
<HeaderStyle CssClass="list_1"></HeaderStyle>
<コラム>
<asp:BoundColumn DataField="COLOR_ID" HeaderStyle-CssClass="disTd" ItemStyle-CssClass="disTd"></asp:BoundColumn>
<asp:TemplateColumn HeaderStyle-horizontalAlign="Center" itemStyle-horizontalAlign="Center" HeaderText="Select<input type='checkbox' id='' onclick='doSelectAll();' title='すべて選択'>">
<HeaderStyle horizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle horizontalAlign="Center" CssClass="list_td"></ItemStyle>
<アイテムテンプレート>
<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="色の名前">
<HeaderStyle horizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle horizontalAlign="Center" CssClass="list_td"></ItemStyle>
</asp:ハイパーリンク列>
<asp:BoundColumn DataField="COLOR_CODE" HeaderText="カラー HTML コーディング">
<HeaderStyle horizontalAlign="Center" CssClass="list_1"></HeaderStyle>
<ItemStyle horizontalAlign="Center" CssClass="list_td"></ItemStyle>
</asp:BoundColumn>
</列>
</asp:datagrid>
フロントでhtmlを説明すると次のようになります。
<table cellpacing="0" rules="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">選択<input type='checkbox' id='' onclick='doSelectAll();' title='すべて選択'></td>
<td class="list_1" align="Center">色の名前</td>
<td class="list_1" align="Center">カラー HTML エンコード</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" align="Center">123123</td>
</tr>
</テーブル>
DataGrid コントロールが Table ラベルになり、ID は変更されず、元の
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox> に
なっていることがわかります。<input id="myDataGrid__ctl2_CheckBox1" type="checkbox" name="myDataGrid:_ctl2:CheckBox1" />
になります
。
ここでの「myDataGrid__ctl2_CheckBox1」は、asp.net によって自動的に追加されます。これは、それが配置されている DataGrid の ID、独自の ID、およびデータがバインドされている行を組み合わせることによって生成されます。
上記の結果は、asp.net1.1 で生成されたもので、id は myDataGrid__ctl2_CheckBox1 ではなく myDataGrid:_ctl2:CheckBox1 に変更されていますが、Microsoft がこれを行う目的は推測できます。 ID と名前を一致させるだけです。実際には、これが dotnet1.1 の理不尽な点の 1 つかもしれません。
小さな発見ですが、皆様のお役に立てれば幸いです。