我是在TemplateColumn中的EditItemTemplate中,添加了一个html控件<INPUT id="File2" type="file" runat="server">   也就是上传文件的那个控件.把它转化为服务器控件了.由于不能直接以文件名(File2)的形式  调用这个控件(不知道是我机器的问题,还是根本就不能这么调用,在TemplateColumn中的EditItemTemplate中),我想在UpdateCommand中,以((TextBox)e.Item.FindControl("Textbox2")).Text这种方式调用它.但是不知道该把这个HTML控件  当做什么类型的控件来调用.我用(TextBox)这种类型无效果.请问应该用什么类型来转化呢???或者有什么其他的方法转化???谢谢~~

解决方案 »

  1.   

    ((HtmlInputFile)e.Item.FindControl("Textbox2")).Value
      

  2.   

    先谢谢一下~~再问个问题:如果我想创建这个控件的快捷方式,是不是应该这么创建(HtmlInputFile)File2=((HtmlInputFile)e.Item.FindControl("File2"));我这么创建后  还说找不到File2这个文件
      

  3.   

    又有新问题了~~
    生成错误:只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句代码如下:高手帮忙看下哪里错误了~~~private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string uName=(string)Session["Name"].ToString().Trim();
    string missionID=e.Item.Cells[2].Text;
    string missionText=((TextBox)e.Item.FindControl("Textbox2")).Text;

    //(HtmlInputFile)File2=((HtmlInputFile)e.Item.FindControl("File2"));
    Session["path"]="无";
    if((((HtmlInputFile)e.Item.FindControl("File2")).PostedFile!=null)&&((((HtmlInputFile)e.Item.FindControl("File2")).PostedFile.ContentLength > 0)))
    {
    string fn=Path.GetFileName(((HtmlInputFile)e.Item.FindControl("File2")).PostedFile.FileName);
    string SaveLocation;
    SaveLocation = Server.MapPath("upload")+"\\"+fn;
    Session["path"]=SaveLocation; try
    {
    (((HtmlInputFile)e.Item.FindControl("File2")).PostedFile.SaveAs(SaveLocation));
    }
    catch(Exception)
    {
    Response.Write(@"<script language='JavaScripr'>alert('文件存档失败')</script>");
    }
    } string connection=ConfigurationSettings.AppSettings["ConnectionString"];
    SqlConnection conn=new SqlConnection(connection); string CommandText="UPDATE information SET Report=@Report,fujian=@fujian WHERE m_id=@id";
    SqlCommand cmd=new SqlCommand(CommandText,conn);
    conn.Open();
    cmd.Parameters.Add("@Report",missionText);
    cmd.Parameters.Add("@fujian",(string)Session["path"].ToString());
    cmd.Parameters.Add("@id",missionID); cmd.ExecuteNonQuery();
    conn.Close(); DataGrid1.EditItemIndex = -1;
    bindgrid();
      

  4.   

    (HtmlInputFile)File2=((HtmlInputFile)e.Item.FindControl("File2"));这句写成
    HtmlInputFile File2=((HtmlInputFile)e.Item.FindControl("File2"));
    就可以了
    因为你File2在CS中并没有定义得,所以上面那种写法是错误得