asp.net ファイル マネージャーを作成します。
基本的に、ユーザーが TreeView コントロール内のフォルダーをクリックすると、そのフォルダー内のファイルが ListView コントロールに表示されます。
リストビュー
<asp:listview id="lvFiles" runat="server" onitemdeleting="lvFiles_ItemDeleting"
onselectedindexchanging="lvFiles_SelectedIndexChanging">
<layouttemplate>
<table cellpadding="2" width="520px" border="1" id="tbl1" runat="server">
<tr id="Tr1" runat="server" style="background-color: #98FB98">
<th id="Th0" runat="server"></th>
<th id="Th1" runat="server">Filename</th>
<th id="Th2" runat="server">Uploaded</th>
<th id="Th3" runat="server">Last Accessed</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
<asp:datapager id="DataPager1" runat="server" pagesize="25">
<fields>
<asp:nextpreviouspagerfield buttontype="Button" />
</fields>
</asp:datapager>
</layouttemplate>
<emptyitemtemplate>
<p>No items</p>
</emptyitemtemplate>
<itemtemplate>
<tr runat="server">
<td><asp:linkbutton id="itemSelected" runat="server" tooltip='<%# Eval("FullName") %>' autopostback="True" commandname="select" text="Select" />
</td>
<td><asp:label id="fNameLabel" runat="server" text='<%# Eval("Name") %>'></asp:label>
</td>
</tr>
</itemtemplate>
<selecteditemtemplate>
<tr id="Tr2" runat="server">
<td>Selected</td>
<td><asp:label id="fNameLabel" runat="server" text='<%# Eval("Name") %>'></asp:label>
</td>
<td><asp:button id="btnDelete" runat="server" text="Delete" commandname="Delete"></asp:button>
</td>
</tr>
</selecteditemtemplate>
</asp:listview>
ファイルリストのバインド
したがって、現在何が起こっているかというとTreeView_SelectedNodeChanged
、アプリケーションは でDirectoryInfo
表されるオブジェクトを取得し、メソッドを使用してオブジェクトTreeNode
の配列を取得します。FileInfo
DirectoryInfo.GetFiles()
それFileInfo[]
は次のメソッドに渡されます。
protected void AddFilesToViewPort(FileInfo[] Files)
{
List<FileInfo> fList = new List<FileInfo>();
for (int i = 0; i < Files.Length; i++)
{
fList.Add(Files[i]);
}
lvFiles.DataSource = fList;
lvFiles.DataBind();
upExistingFiles.Update();
}
FileInfo[]
これは、をListView
オブジェクト にバインドしますlvFiles
。これは、私が望む方法とほとんど同じです。
私がやりたいことは、ListView でアイテムを選択できるようにすることです (これは現時点で実行できます)。次に、ユーザーがDelete
ボタンを押したときに、アプリケーションが問題のファイルを操作できるようにします。基本的に、ファイルを「削除済みファイル」ディレクトリに移動し、アクションをデータベースに記録したいと考えています。
私が抱えている問題は、FileInfo
選択したリスト項目に関連付けられた実際のオブジェクトを取得することです。
デバッガーを にアタッチしてステップ スルーすると、lvFiles_ItemDeleting
イベントがListItem
発生し、選択したオブジェクトのインデックスを取得する必要がありますが、デバッガーでオブジェクトを調べると、オブジェクトに関する実際の情報ListItem
が表示されます。そこにないだけです。
上の画像でわかるように、 の DataKeys プロパティはListView
その項目に関する情報を保持していますが、そのプロパティをさらに掘り下げてみると、情報がそこにありません。
FileInfo
選択した からオブジェクトを取得するにはどうすればよいListViewItem
ですか?