用List类对文件进行分页?

in Develop

看到BI上常有人问这样的问题,其实呢,解决的方法很简单
在asp中你可以用数组去解决
在.Net中你可以用List类或Quere类来解决
这里用.net来实现,其实也就是这个blog后台管理中的一个附件管理功能
因为是用文件操作,所以需要导入System.Io

public partial class FileBowser : System.Web.UI.Page
{

int _page = 1;   //设置当前页码为第1页
string _capture_string = "";   //用来存储主体的图片代码
int _pagesize = 30;   //每页显示的图片数
string _uploadPath = ConfigurationManager.AppSettings["UploadImagePhysicsDirectory"];  //文件夹的实路径
string _uploads = ConfigurationManager.AppSettings["Uploads"];   //虚路径
List<FileInfo> sl = new List<FileInfo>();  //.net 2.0中的泛类型,主要靠它了
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["page"] != null)
_page = Int16.Parse(Request.QueryString["page"]);
getFiles();
}

private void getFiles()
{
DirectoryInfo di = new DirectoryInfo(_uploadPath);
foreach (FileInfo fi in di.GetFiles())   //遍历当前目录下的所有文件,并添加至sl变量中
{
sl.Add(fi);
}
int index = 0;
int _startRecord = (_page-1) * _pagesize;  //计算起始数
if (sl.Count > 0)
{
//计算总页数
int _pagecount = sl.Count % _pagesize == 0 ? sl.Count / _pagesize : sl.Count / _pagesize + 1;

for (int i = _startRecord; i < _startRecord+_pagesize; i++)
{
if (index % 6 == 0) _capture_string += "<tr>";
_capture_string += string.Format("<td align=\"center\"><img src=\"../zh-cn/{0}/{1}\"", _uploads, sl[i].Name);
if (index % 6 == 5) _capture_string += "</tr>";

index++;
if (i >= (sl.Count-1)) break;

}
int quot = index % 6;
if (quot > 0)
{
for (; quot < 6; quot++) _capture_string += @"<td ></td>";
_capture_string += "</tr>";
}

}
else
{
_capture_string += "<tr><td>没有任何附件</td></tr>";
}
}
protected string getUploads()
{
return _capture_string;
}

}

前台用getUploads()方法即可得到分页,当然,分页的序号这里没有给出,留给大家了

0 Comments

asp.net与asp下的UrlEncode之异

in Develop

上午在弄yahoo的天气预报
http://weather.cn.yahoo.com/index.html
大家在这个链接中看到的只是当天的天气
在这个链接中看到的是三天的天气,要处理的就是这个页面
http://weather.cn.yahoo.com/area.html?city=城市
直接在浏览器中输入地址返回的结果是正确的
但是
如果直接在程序中去处理形如这样的页面,得到的结果就是错误的
http://weather.cn.yahoo.com/area.html?city=武汉
为什么呢?
就是没有对“武汉”进行url编码
不管是asp还是asp.net中都是用Server.UrlEnCode()来处理
于是在处理过程中很自然的:
Server.UrlEnCode(“武汉”)
但返回的结果还是错误.
试过多次还是一样的错误

会不会是通过UrlEncode后出现问题?
于是在.net环境下单独对”武汉”作了UrlEncode的转换
然后在asp环境下也对“武汉”作了UrlEnCode的转换
结果在这二种环境下产生的字符串完全不同!
为什么会这样?


ASP.net 中的 Server.UrlEncode 默认是按照 UTF-8 编码方式进行处理的。而ASP中是按照本地设置编码方式进行处理的。

知道这个以后就好办了
HttpUtility.UrlEncode(“武汉”,Encoding.Default)
这样就正确了!

0 Comments

天气预报[取自sohu]

in Develop

本打算”偷”Yahoo的,但后来还是爱上sohu的了
立马就放了上来
大家可以看看效果

http://yibin.us/zh-cn/Weather.html

0 Comments

获取yahoo的天气预报信息

in Develop

下午弄出来的
准备用到blog上

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;

public partial class Default2 : System.Web.UI.Page
{
    protected string _content;
    protected void Page_Load(object sender, EventArgs e)
    {
        GetWebInfo web = new GetWebInfo(new UriBuilder(@"http://weather.cn.yahoo.com/area.html?city=%CE%E4%BA%BA"));

        _content = web.LinkFind();
    }
}
class GetWebInfo
{
    public String filetext;
    public GetWebInfo(UriBuilder url)
    {
        filetext = "";
        HttpWebRequest rs = (HttpWebRequest)WebRequest.Create(url.Uri);
        try
        {
            HttpWebResponse rsp = (HttpWebResponse)rs.GetResponse();

            using (StreamReader reader = new StreamReader(rsp.GetResponseStream(), System.Text.Encoding.Default))
            {
                String tmstr = "";
                while ((tmstr = reader.ReadLine()) != null)
                {
                    filetext += tmstr;
                }
            }
        }
        catch
        {
        }
    }
    public string  LinkFind()
    {
        Regex r;
        Match m;
        string _str = "";
            r = new Regex("&lt;!--3--&gt;\\s*(?&lt;1&gt;.*[^&lt;])&lt;!--3--&gt;",
            RegexOptions.IgnoreCase | RegexOptions.Compiled);
        for (m = r.Match(filetext); m.Success; m = m.NextMatch())
        {
            _str+=m.Groups[1].ToString();
        }
        return _str;
    }
}
0 Comments