尽量解释清楚,希望你能理解我的问题。
我的aspx页面允许客户端上传文件(允许文件的所有扩展名)到根文件夹中。然后在该aspx页面中,它有一个Repeater控件来显示上传的所有文件。
我一直在找到检测哪个文件可以在编辑器控件中编辑的方法。
例如:if item= xml file --> show Edit Text
if item= source code file ---> show Edit Text
在Repeater1_ItemDataBound
函数中,在最后一个else if
语句中,只要项目为:{text},源代码,xml文件,就会添加Edit Text
函数...更多..
在我的下面的代码中,我可以做一些文件扩展名,但我知道这还不够。
帮助!!!
如果你真的不明白,请问!!!
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand"
OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="imagelabel" runat="server" Text=""></asp:Label>
</td>
<td>
<asp:LinkButton ID="lnkFolder" runat="server" Text='<%# Eval("Name") %>' CommandName="Select"></asp:LinkButton>
</td>
<td >
<asp:LinkButton ID="LinkButton1" runat="server" Text="<img src='pic/trash.png'/> Delete" CommandArgument='<%# Eval("Path") +"," + Eval("Type")%>'CommandName="Delete"> </asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="LinkButton2" runat="server" Text="<img src='pic/gear--pencil.png'/> Rename" CommandArgument='<%# Eval("Path") + "," + Eval("Type") + "," + Eval("Name")%>'CommandName="Edit"></asp:LinkButton>
</td>
<td>
asp:LinkButton ID="lbtnEditText" runat="server" Text="" CommandArgument='<%# Eval("Path") + "," + Eval("Name")%>'CommandName="EditText" OnCommand="Button1_Click"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
查看我的Repeater1_ItemDataBound
功能:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (((DataRowView)e.Item.DataItem).Row["Type"].ToString() == "D")// if item= folder
{
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/folder.png'>";
}
else
{
string fileExtension = ((DataRowView)e.Item.DataItem).Row["Extension"].ToString();
if (fileExtension.Equals(".gif") || fileExtension.Equals(".jpg") || fileExtension.Equals(".png"))
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/gallery.jpg'>";
else if (fileExtension.Equals(".doc") || fileExtension.Equals(".docx"))
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/doc.gif'>";
else if (fileExtension.Equals(".pdf"))
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/pdf.gif'>";
else if (fileExtension.Equals(".xls"))
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/excel.gif'>";
else if???
{
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/Text.gif'>";
//add Edit Text function here
((LinkButton)e.Item.FindControl("lbtnEditText")).Text = "<img src='pic/pe.png'/> Edit Text";
}
}
}
答案 0 :(得分:2)
您可以创建一个包含“可编辑”文件扩展名的列表,并检查扩展名是否在那里。 像我想的那样,
var editable = new[]{ ".xml", ".txt".... et cetera };
else if(editable.Contains(fileExtension))
{
display edit button
}
你可以做得更好。 您可以创建表示文件信息的类。
class FileInfo
{
public string Extension { get; set; }
public string IconPath { get; set; }
public string Editable { get; set; }
}
//somewhere inside you class
var files = new List<FileInfo>();
files.Add(new FileInfo(){ Extension = ".txt", IconPath = "<img src='pic/pe.png'/>", Editable = true});
// do this for all extensions
var fileInfo = file.First(f => f.Extension.Equals(fileExtension))
((Label)e.Item.FindControl("imagelabel")).Text = fileInfo.IconPath;
if(fileInfo.Editable)
{
((LinkButton)e.Item.FindControl("lbtnEditText")).Text = "<img src='pic/pe.png'/> Edit Text";
}
答案 1 :(得分:1)
您应该列出您认为是文本文件的所有extesions并将它们添加到您的代码中。 类似的东西:
var textExtensions = new HashSet<string> { ".txt", ".css", ".htm", ".html", ".xml", ".c", /*etc.*/ };
...
else if textExtensions.Contains(fileExtension)
{
((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/Text.gif'>";
//add Edit Text function here
((LinkButton)e.Item.FindControl("lbtnEditText")).Text = "<img src='pic/pe.png'/>Edit Text";
}
如果您想要通常被视为文本文件的扩展名列表,请查看MIME Types in IIS中的表格。
选择Type / subtype列以“text”
开头的所有扩展名