具体的情况是这样的,我做的是一个网络文件夹功能的网页,可以通过点击列表中的图片名称所在行(就是点击那个前面的代表图片的标示),然后在一个DIV层里面显示这个图片。做出来之后总是显示缺少对象,望诸位给与帮助。
public void showdir(string path)
{
//获取所有文件夹
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] d = di.GetDirectories();
string html = "";
html = "<table style='width=400;height=200'><tr><td>文件类型</td><td>文件名称</td><td>最后访问时间</td></tr>";
foreach (DirectoryInfo dd in d)
{
html += "<tr><td><img src='image/dir.jpg'></td><td>" + dd.Name + "</td><td>" + dd.LastAccessTime.ToShortDateString() + "<input type='Button' Height='28px' Width='100px' id=" + dd.Name + "' value='打开' onclick='' /></td></tr>";
} //获取所有文件
FileInfo[] files = di.GetFiles();
foreach (FileInfo fi in files)
{
string exename = fi.Extension.ToLower();
string imageurl = "image/";
switch (exename)
{
case ".txt":
imageurl = imageurl + "txt.jpg";
break;
case ".jpg":
imageurl = imageurl + "img.jpg";
break;
case ".doc":
imageurl = imageurl + "doc.jpg";
break;
case ".rar":
imageurl = imageurl + "rar.jpg";
break;
case ".exe":
imageurl = imageurl + "exe.jpg";
break;
default:
imageurl = imageurl + "unkown.jpg";
break;
}
html += "<tr><td><img src='" + imageurl + "'onclick='buttonall(this.a)' a='" + fi.Name + "'/></td><td>" + fi.Name + "</td><td>" + fi.LastAccessTime.ToShortDateString() + "</td></tr>";//
}
html += "</table>";
divv.InnerHtml = html;
}
public void buttonall(string p)
{
string html = "<table><tr><td><center><img src='" + p + "' /></center></td></tr></table>";
DIV2.InnerHtml = html;
}
我知道红色部分有错误,就是不会调用,哪位解决下,谢谢了,很急!.
public void showdir(string path)
{
//获取所有文件夹
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] d = di.GetDirectories();
string html = "";
html = "<table style='width=400;height=200'><tr><td>文件类型</td><td>文件名称</td><td>最后访问时间</td></tr>";
foreach (DirectoryInfo dd in d)
{
html += "<tr><td><img src='image/dir.jpg'></td><td>" + dd.Name + "</td><td>" + dd.LastAccessTime.ToShortDateString() + "<input type='Button' Height='28px' Width='100px' id=" + dd.Name + "' value='打开' onclick='' /></td></tr>";
} //获取所有文件
FileInfo[] files = di.GetFiles();
foreach (FileInfo fi in files)
{
string exename = fi.Extension.ToLower();
string imageurl = "image/";
switch (exename)
{
case ".txt":
imageurl = imageurl + "txt.jpg";
break;
case ".jpg":
imageurl = imageurl + "img.jpg";
break;
case ".doc":
imageurl = imageurl + "doc.jpg";
break;
case ".rar":
imageurl = imageurl + "rar.jpg";
break;
case ".exe":
imageurl = imageurl + "exe.jpg";
break;
default:
imageurl = imageurl + "unkown.jpg";
break;
}
html += "<tr><td><img src='" + imageurl + "'onclick='buttonall(this.a)' a='" + fi.Name + "'/></td><td>" + fi.Name + "</td><td>" + fi.LastAccessTime.ToShortDateString() + "</td></tr>";//
}
html += "</table>";
divv.InnerHtml = html;
}
public void buttonall(string p)
{
string html = "<table><tr><td><center><img src='" + p + "' /></center></td></tr></table>";
DIV2.InnerHtml = html;
}
我知道红色部分有错误,就是不会调用,哪位解决下,谢谢了,很急!.
2、建议使用LZ使用StringBuilder,代替上述操作
{
//获取所有文件夹
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] d = di.GetDirectories(); StringBuilder html = new StringBuilder();
html.Append(" <table style='width=400;height=200'> <tr> <td>文件类型 </td> <td>文件名称 </td> <td>最后访问时间 </td> </tr>");
foreach (DirectoryInfo dd in d)
{
html.AppendFormat(" <tr> <td> <img src='image/dir.jpg'> </td> <td>{0}</td> <td>{1}<input type='Button' Height='28px' Width='100px' id={0} value='打开' onclick='' /> </td> </tr>", dd.Name, dd.LastAccessTime.ToShortDateString());
} //获取所有文件
FileInfo[] files = di.GetFiles();
foreach (FileInfo fi in files)
{
string exename = fi.Extension.ToLower();
string imageurl = "image/";
switch (exename)
{
case ".txt":
imageurl = imageurl + "txt.jpg";
break;
case ".jpg":
imageurl = imageurl + "img.jpg";
break;
case ".doc":
imageurl = imageurl + "doc.jpg";
break;
case ".rar":
imageurl = imageurl + "rar.jpg";
break;
case ".exe":
imageurl = imageurl + "exe.jpg";
break;
default:
imageurl = imageurl + "unkown.jpg";
break;
}
html.AppendFormat(" <tr> <td> <img src=\"{0}\" onclick='buttonall(this.a)' a=\"{1}\" /> </td> <td>{1}</td> <td>{2} </td> </tr>", imageurl, fi.Name, fi.LastAccessTime.ToShortDateString());
}
html.Append(" </table>");
}
前台调用后台
<script type="text/javascript"> function show(path) {
__doPostBack('后台方法', path);
}
</script>
注:前台也可以直接生成html
__doPostBack("后台方法","后台方法参数")
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">button1</asp:LinkButton>在html中的源码中被翻译成了:
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">button1</a>上面的代码可以明显的看出,LinkButton只不过就是一个超链接,他的链接就是执行javascript语句通过调用__doPostBack函数来调用服务器端的后台代码的。因此,在有LinkButton的页面,会自动加上上面的__doPostBack函数。但是在我们调用__doPostBack函数时,有些时候调用这个函数会出现"对象不存在"的脚本错误? 那是因为Html里面没有__doPostBack函数体,一般在拖放那些有自动回传功能的控件时,当把他的autoPostback属性设为True,在运行的时候系统会自动添加__doPostback函数体,当然最直接的办法就是添加一个LinkButton然后把其Text属性设为空,切记不要设Visible属性,因为如果Visible=false,在翻译成Html时,直接就忽略LinkButton的存在了。
我这里的onclick='buttonall(this.a)'不是也需要改成onclick='show()'?