0

ファイルへのリンクとともに、グリッド内の特定のディレクトリにあるpdfファイルを表示するページに取り組んでいます。

ここで Scott Mitchell の例を変更しています: http://aspnet.4guysfromrolla.com/articles/052803-1.aspx

コードを vb から c# に変換しました。

<%@ Import Namespace="System.IO" %>
<script language="C#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(""));

articleList.DataSource = dirInfo.GetFiles("*.pdf");
articleList.DataBind();
}
</script>

<asp:DataGrid runat="server" id="articleList" Font-Name="Verdana"
AutoGenerateColumns="False" AlternatingItemStyle-BackColor="#eeeeee"
HeaderStyle-BackColor="Navy" HeaderStyle-ForeColor="White"
HeaderStyle-Font-Size="15pt" HeaderStyle-Font-Bold="True">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" 
       HeaderText="File Name" target="_blank"/>
<asp:BoundColumn DataField="LastWriteTime" HeaderText="Last Write Time"
    ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />
</Columns>
</asp:DataGrid>

上記のコードは、ファイルを表示する際に機能します。今やりたいことは、グリッド フィルタリングを追加することです。

ファイル名は、pdf へのリンクとしてグリッドに表示されます。特定のファイル名または __ で始まるファイル名をフィルタリング/検索できるテキスト フィールドを追加するにはどうすればよいですか?

また、私のページはリンクを提供するだけなので、ブラウザがpdfをキャッシュしないようにすることは可能でしょうか?

ヘルプやアイデアをいただければ幸いです。

ありがとう。

4

2 に答える 2

1

以下のように試してみてください。

HTMLデザインビューで、DataGridViewが以下のコードを追加する前に、テキストボックスとボタンを作成します

HTML:

    Enter the Name of the file : <asp:TextBox ID="txtFilter" runat="server"></asp:TextBox>
        <asp:Button ID="btnShow"
            runat="server" Text="ShowData" onclick="btnShow_Click" />

以下のようなボタンクリックイベントを追加...

CS:

        protected void btnShow_Click(object sender, EventArgs e)
        {
         ShowData();
        }

        public void ShowData()
        {
            string FilterValue = txtFilter.Text.ToUpper();
            DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(""));

            FileInfo[] info = dirInfo.GetFiles("*.zip");            //Get FileInfo and Save it a FileInfo[] Array

            List<Getfiles> _items = new List<Getfiles>();          // Define a List with Two coloums

            foreach (FileInfo file in info) //Loop the FileInfo[] Array
               _items.Add(new Getfiles { Name = file.Name, LastWriteTime = file.LastWriteTime.ToString("MM/dd/yyyy") });  // Save the Name and LastwriteTime to List


           //you can use Any one the Filtered list from the below...

            var tlistFiltered = _items.Where(item => item.Name.ToUpper() == FilterValue); // Find the File by their File Name
            var tlistFiltered1 = _items.Where(item => item.Name.ToUpper().Contains(FilterValue)); // Find the file that Contains Specific word in its File Name
            var tlistFiltered2 = _items.Where(item => item.Name.ToUpper().StartsWith(FilterValue));// Find tha File that StartsWith Some Specific Word


            articleList.DataSource = tlistFiltered; //Assign the DataSource to DataGrid
            articleList.DataBind();

        }

        public class Getfiles
        {
            public string Name { get; set; }
            public string LastWriteTime { get; set; }
        }

出力画面:

ここに画像の説明を入力してください

于 2013-03-18T14:46:16.203 に答える
0

ObjectDataSource を使用してから、それを DataGrid に渡すことができます。Object Data Source は Directory Info 呼び出しをラップします。

ObjectDataSource を取得したら、DataGrid の組み込みのフィルタリングおよび並べ替え機能を使用できるようになります。

Scott Mitchel には、これに関するいくつかのチュートリアルがあります。

http://msdn.microsoft.com/en-us/library/aa581784.aspx

そして、これはSqlを使用するためのものですが、ファイルリストをプルするように簡単に適応できるはずです:

http://asp-net-example.blogspot.nl/2008/11/aspnet-gridview-and-objectdatasource.html

于 2013-03-18T14:11:01.160 に答える