|
■No97511 (WebSurfer さん) に返信
WebSurfer様、アドバイスありがとうございます。
最初にタイトルですが、編集キーを設定しなかったため変更出来ませんでした。すみません。
> "inaccessible due to its protection level" というところからの想像ですが、VS2005 では > aspx と aspx.vb を分けずにコードは aspx 内の script タグの中に書いていたものを、VS2019 > では aspx と aspx.vb に分けて、VB.NET のコードは aspx.vb に書いていませんか?
VS2005のプログラムは既に廃棄してしまい手元にありませんが、ソースフォルダ内には ・aspx ・aspx.vb ・aspx.resx の3つの拡張子のファイルがあります。
今回、VS2019への手動移行はこのフォルダ内のaspxとaspx.vbをテキストエディタで開き、デザインは VS2019でWebフォームの新規作成でツールボックスを使い作成し、イベントはVS2005のaspx.vb内の 該当部分をコピペする形で移行しています。
最初の記事で掲載させていただきましたVS2019のコード部分のVS2005版は下記の通りです。
■aspx
<asp:datagrid id="dgrdNew" runat="server" Width="942px" Font-Size="Smaller" AutoGenerateColumns="False" GridLines="Horizontal"> <HeaderStyle BackColor="#CCFFFF"></HeaderStyle> <Columns> <asp:TemplateColumn> <HeaderStyle Width="10px"></HeaderStyle> <ItemTemplate> <asp:image Runat="server" imageurl='images/p_new_anime.gif' Visible='<%# GetVisible(Container.DataItem) %>' /> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="名前"> <HeaderStyle Width="120px"></HeaderStyle> <ItemStyle HorizontalAlign="Left"> </ItemStyle> <ItemTemplate> <asp:HyperLink ID="ID" Runat="server" navigateurl='<%# GetUrl(Container.DataItem) %>' text='<%# container.dataitem("PERSONAL_NAME") %>' /> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="COMPANY_NAME" HeaderText="会社名"> <HeaderStyle Width="200px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="COMPANY_SECTION1" HeaderText="部門1"> <HeaderStyle Width="150px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="COMPANY_SECTION2" HeaderText="部門2"> <HeaderStyle Width="150px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="COMPANY_POSITION" HeaderText="役職"> <HeaderStyle Width="50px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="LAST_CONFIRM_DATE" HeaderText="更新日" DataFormatString="{0:yy/MM/dd}"> <HeaderStyle Width="50px"></HeaderStyle> </asp:BoundColumn> </Columns> </asp:datagrid>
■aspx.vb
Sub BindData()
Dim strSQL As String = "SELECT BUNRUICD,BUNRUINM FROM T_BUNRUI " & _ " ORDER BY BUNRUICD " Dim con As New OleDbConnection(ConfigurationSettings.AppSettings("conStringBc"))
'OleCommandオブジェクトを宣言 Dim da As New OleDbDataAdapter(strSQL, con)
Dim ds As New DataSet da.Fill(ds, "BUNRUI")
With ddlBunrui .DataSource = ds.Tables("BUNRUI") .DataValueField = "BUNRUICD" .DataTextField = "BUNRUINM" .DataBind() .Items.Insert(0, New ListItem("--- カテゴリを選択 ---", "")) End With
Dim strSQL2 As String = "SELECT TOP 5 ID,PERSONAL_NAME,COMPANY_NAME,COMPANY_SECTION1," & _ "COMPANY_SECTION2,COMPANY_POSITION,LAST_CONFIRM_DATE FROM T_MEISI " & _ " ORDER BY LAST_CONFIRM_DATE DESC , ID DESC "
'OleCommandオブジェクトを宣言 Dim da2 As New OleDbDataAdapter(strSQL2, con)
Dim ds2 As New DataSet da2.Fill(ds2, "NEWDB")
With dgrdNew .DataSource = ds2.Tables("NEWDB") .DataBind() End With
End Sub
〜〜〜途中省略〜〜〜検索ボタン等の処理
Function GetVisible(ByVal drv As DataRowView) As Boolean
Dim drow As DataRow = drv.Row
'今日より30日前 Dim wkDate As Date = DateAdd("d", -30, Now) Dim wkLast As Date = drow("LAST_CONFIRM_DATE")
If wkLast < wkDate Then Return False Else Return True End If
End Function
(※補足) 当初デザインではVS2005の<asp:datagrid id="dgrdNew"移行(前掲)を貼り付けましたが、コンパイルで
'/' アプリケーションでサーバー エラーが発生しました。 パーサー エラー 説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソース ファイルに変更を加えてください。
パーサー エラー メッセージ: 基本クラスに 'dgrdNew' という名前のフィールドが含まれていますが、その型 (System.Web.UI.WebControls.GridView) はコントロール (System.Web.UI.WebControls.DataGrid) の型と互換性がありません。
ソース エラー:
行 251: <p> 行 252: ■新着名刺</p> 行 253: <asp:datagrid id="dgrdNew" runat="server" Width="942px" Font-Size="Smaller" AutoGenerateColumns="False" GridLines="Horizontal"> 行 254: <HeaderStyle BackColor="#CCFFFF"></HeaderStyle> 行 255: <Columns>
のエラーが発生したため、VS2019ではツールに備わっているGridViewを使った方がこの先を考えた場合にも良いのではと思い VS2019ではgridviewを使いテンプレート編集でイベントを設定しました。
よろしくお願いいたします。
|