我有一个网格视图,我用文件夹中的图像填充。我试图通过获取他们的路径名来删除图像,但它总是返回null:
以下是我用图片填充网格视图的代码:
protected void GetImage()
{
string path = HttpContext.Current.Request.PhysicalApplicationPath + @"Story/Food Fit For A King";
string[] files = System.IO.Directory.GetFiles(path, "*.jpg");
IList<ImageFileInfo> imageFileList = new List<ImageFileInfo>();
foreach (string strFileName in files)
{
// Change the Absolute path to relative path of File Name and add to the List
imageFileList.Add(new ImageFileInfo { FileName = ResolveUrl(strFileName.Replace(Server.MapPath("/"), "~/")) });
}
gvStory.DataSource = imageFileList;
gvStory.DataBind();
}
以下是我要删除的代码:
protected void gvStory_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridView gvQuestion = (GridView)sender;
int row = e.RowIndex;
// Extract Values.
// string imageName = (TextBox)gvStory.Rows[row].Cells[0].FindControl("TextBox1");// RETURNS NULL
Image img = (Image)gvStory.Rows[row].Cells[0].FindControl("Image1");
string url = img.ImageUrl;
// string fileName = Path.GetFullPath(url); // RETURNS NULL
//string fileName = Path.Combine(Server.MapPath(@"Story/Food Fit For A King"), imageName);
File.Delete(fileName);
GetImage();
}
我是否以正确的方式处理图像的文件路径?但我需要图像的完整路径来删除它,我试图使用Path.GetFullPath(url),它不起作用。需要帮助。
并且是aspx html方面的一部分:
<asp:TemplateField HeaderText="Images">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("FileName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("FileName") %>' Width="240" Height="160" />
</ItemTemplate>
</asp:TemplateField>
需要帮助。
答案 0 :(得分:0)
如果gridview行处于编辑模式,则只有您可以找到<EditItemTemplate>
标记内的控件。在editmode中,您将获得rowindex为-1。在其他模式下,rowindex将大于-1,然后您可以找到<ItemTemplate>
标记内的控件。否则,您将获得空值。所以,你可以尝试这种方式,
protected void gvStory_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridView gvQuestion = (GridView)sender;
int row = e.RowIndex;
string fileName ="";
if(row==-1)
{
string imageName = (TextBox)gvStory.Rows[row].Cells[0].FindControl("TextBox1");
fileName = Path.Combine(Server.MapPath(@"Story/Food Fit For A King"),imageName);
}
else
{
Image img = (Image)gvStory.Rows[row].Cells[0].FindControl("Image1");
string url = img.ImageUrl;
fileName = Path.GetFullPath(url);
}
File.Delete(fileName);
GetImage();
}