C# FileUpload.HasFile属性始终为false,而文件上载放在GridView中
我有一个选项卡容器,里面有一个GridView。我需要上传图像,而我在特定的行点击。我也在使用更新面板,在grid视图之外,我可以使用PostBack触发器预览按钮上传图像,但在gridview内部,我不知道如何访问它。我刚刚在gridview外部创建了一个名为btngrvPreview的按钮,并将其单击事件调用到位于gridview内部的按钮btnPreview1。我认为这种方法是正确的。。但我不知道为什么btnPreview1的触发器不起作用 其显示ifvFile.HasFile的条件始终为false 帮我解决这个问题 网格视图C# FileUpload.HasFile属性始终为false,而文件上载放在GridView中,c#,asp.net,file-upload,C#,Asp.net,File Upload,我有一个选项卡容器,里面有一个GridView。我需要上传图像,而我在特定的行点击。我也在使用更新面板,在grid视图之外,我可以使用PostBack触发器预览按钮上传图像,但在gridview内部,我不知道如何访问它。我刚刚在gridview外部创建了一个名为btngrvPreview的按钮,并将其单击事件调用到位于gridview内部的按钮btnPreview1。我认为这种方法是正确的。。但我不知道为什么btnPreview1的触发器不起作用 其显示ifvFile.HasFile的条件始终为
提前感谢。您可以进行调试,并确保findcontrol方法没有返回null,还可以在EditTemplate中放置fileupload控件,因此您必须在GridView\u PreRender events中以这种方式进行检查
if (this.GridView1.EditIndex != -1)
{
FileUpload upload = GridView1.Rows[GridView1.EditIndex].FindControl("fupImage1") as Button;
if (upload != null)
{
//do something
}
}
也许这会帮助你 我试过你的代码,它没有返回null,返回{System.Web.UI.WebControls.FileUpload}control。。但是文件名是空的。之前我也遇到过同样的问题。如果asp:FileUpload控件位于UpdatePanel内,则不能触发异步回发,因为它不会发布文件。FileUpload控件仅位于UpdatePanel内,并且我没有使用异步回发,我只是使用了我必须添加的其他内容?确保UpdatePanel设置为仅有条件回发,并且FileUpload控件导致同步回发。
protected void btnPreview1_Click(object sender, ImageClickEventArgs e)
{
try
{
int rowIndex = Convert.ToInt32(hifRecordID.Value);
Image vimgView = (Image)grvItem.Rows[rowIndex].FindControl("grvUploadImage");
System.Web.UI.WebControls.FileUpload vFile = (System.Web.UI.WebControls.FileUpload)grvItem.Rows[rowIndex].FindControl("fupImage1");
string strimage;
string strfilename, strextn;
if (vFile.HasFile)
{
System.IO.Path.GetExtension(vFile.FileName);
string strfileExtension = System.IO.Path.GetExtension(vFile.FileName).ToLower();
string[] strAllowedFileExtensions = { ".gif", ".jpeg" };
if (strfileExtension == ".jpeg")
strfileExtension = ".gif";
if (FileExtensionIsApproved(strfileExtension) == true)
{
strfilename = System.IO.Path.GetFileName(vFile.PostedFile.FileName);
strextn = System.IO.Path.GetExtension(strfilename);
strimage = ObjDataAccess.LoginName + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + strextn;
ViewState["Filename"] = strimage;
string strpath = ConfigurationManager.AppSettings["ITEMPHOTO"] + strimage;
//Server.MapPath("empphoto") + "\\" + strimage;
vFile.PostedFile.SaveAs(strpath);
if (hifimgbrowser.Value == "IE")
{
vimgView.ImageUrl = strpath;
// tstimg.HRef = vimgView.ImageUrl;
}
else
{
vimgView.ImageUrl = "~/Handler.ashx?id=" + strpath;
// tstimg.HRef = imgView.ImageUrl;
}
vimgView.Visible = true;
System.IO.Stream fs = vFile.PostedFile.InputStream;
byte[] bytMyData = new byte[fs.Length + 1];
fs.Read(bytMyData, 0, Convert.ToInt32(fs.Length));
fs.Close();
}
else
{
// DeleteImageFile();
vimgView.ImageUrl = "";
// tstimg.HRef = "";
vimgView.Visible = true;
}
}
}
catch (Exception ex)
{
strMsg = ex.Message;
ScriptManager.RegisterStartupScript(Page, this.GetType(), "alertScript", "showMsgbox('" + strMsg + "','','2','');", true);
}
}
if (this.GridView1.EditIndex != -1)
{
FileUpload upload = GridView1.Rows[GridView1.EditIndex].FindControl("fupImage1") as Button;
if (upload != null)
{
//do something
}
}