返回"System.Web.UI.WebControls.DataControlFieldCell".字符串“文件名" [英] returns " System.Web.UI.WebControls.DataControlFieldCell" for the string " filename"
问题描述
你好,
对于下载文件,我喜欢使用在网上找到的以下代码.所以我做了一个网格视图,第一列是文件名.
现在,当我运行该应用程序时,出现消息"此文件不存在.".
因此,为了检查我的代码,我添加了语句Response.Write(filename)<code> after statement <code>string filename = rowItem.Cells[0].ToString()
,因此在运行该应用程序后,它将为值"filename"返回System.Web.UI.WebControls.DataControlFieldCell
.
请帮助出什么问题.
-------------------------------------------------- ----
Hello,
For Download a file I like to use the below code that I found in the net. So I have made a grid view that first column is file name.
Now when I run the application, I have the message "This file does not exist.".
So for checking my code I have added statement Response.Write(filename)<code> after statement <code>string filename = rowItem.Cells[0].ToString()
, so after running the application it returns System.Web.UI.WebControls.DataControlFieldCell
for the value " filename".
Please help what is the problem.
------------------------------------------------------
protected void lnkPath_OnClick(object sender, EventArgs e)
{
GridViewRow datarow = (GridViewRow)(((Control)sender).NamingContainer);
int i = datarow.RowIndex;
foreach (GridViewRow rowItem in grdv.Rows)
{
if (rowItem.RowIndex == i)
{
string filename = rowItem.Cells[0].ToString();
if (filename != "")
{
string path = Server.MapPath(filename);
System.IO.FileInfo file = new System.IO.FileInfo(path);
if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();
}
else
{
Response.Write("This file does not exist.");
}
}
}
}
}
----------------------------------------------
----------------------------------------------
<asp:GridView ID="grdv" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Title" >
<ItemTemplate>
<asp:LinkButton ID="lnkPath" runat="server" Text= '<%# Bind("Coach_First") %>' OnClick="lnkPath_OnClick" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DocsID" >
<ItemTemplate>
<asp:Label ID="lblDocsID" runat="server" Text='<%# Bind("CoachId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ProjectID" >
<ItemTemplate>
<asp:Label ID="lblProjectID" runat="server" Text='<%# Bind("Coach_Last") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Webpath" >
<ItemTemplate>
<asp:Label ID="lblWebpath" runat="server" Text='<%# Bind("Coach_Email") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:conn %>" ID="SqlDataSource1"
runat="server" SelectCommand="SELECT top 5 CoachId, Coach_First, Coach_Last, Coach_Email from tblCoach">
</asp:SqlDataSource>
推荐答案
ConnectionStrings:conn%>" ID =" 运行 =" SelectCommand =" < /asp:SqlDataSource >
ConnectionStrings:conn %>" ID="SqlDataSource1" runat="server" SelectCommand="SELECT top 5 CoachId, Coach_First, Coach_Last, Coach_Email from tblCoach"> </asp:SqlDataSource>
之所以返回System.Web.UI.WebControls.DataControlFieldCell
的原因是因为此行.
The reason why its returningSystem.Web.UI.WebControls.DataControlFieldCell
is because of this line.
string filename = rowItem.Cells[0].ToString();
尝试将其替换为
Try replacing it with
string filename = rowItem.Cells[0].Text;
这篇关于返回"System.Web.UI.WebControls.DataControlFieldCell".字符串“文件名"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!