2014-09-17 2 views
1

У меня возникла проблема. Я размещаю элемент управления ascx на странице aspx. На странице aspx я использую UpdatePanel. И на странице ascx я использую Formview. В Formview<InsertItemTemplate> я использую элемент управления asp:FileUpload для загрузки файла. После выбора файла, когда я проверяю FileUpload.HasFile, он всегда дает мне ложь. Я пытаюсь запустить <Triggers>, но не Успех, потому что загрузка файла находится на моей странице ascx. В приведенном ниже примере я показываю свои проблемы.Flieupload не работает на странице ascx

code 
     FileUpload _fileUpload = FormView1.FindControl("FileUpload1") as FileUpload; 
    if (_fileUpload != null && _fileUpload.HasFile) 
     { 
     /// some code i write here 
     } 

ASPX

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Always"> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="GridView1" /> 
       <asp:PostBackTrigger ControlID="imagAddNew" /> 
       <asp:AsyncPostBackTrigger ControlID="EditProduct1" /> 
       <asp:PostBackTrigger ControlID="ImageButton1" /> 
      </Triggers> 
    <ContentTemplate> 
    <asp:Panel ID="pnl_grid" Style="width: 100%; overflow: auto;" runat="server"> 
     <uc1:EditProduct ID="EditProduct1" runat="server" /> 
    </asp:Panel> 

ASCX

<asp:FormView ID="FormView1" runat="server" Width="100%" ondatabinding="FormView1_DataBinding"> 
    <InsertItemTemplate> 
<table> 
<tr> 
     <td class="label-col"> 
        Image 
       </td> 
       <td class="data-col"> 
        <asp:FileUpload ID="FileUpload1" runat="server" /> 
       </td> 
<td> 
    <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="True" CommandName="Insert" 
           ImageUrl="~/images/save.gif" ValidationGroup="Inser" /> 
</td> 
</tr> 
</table> 
    </InsertItemTemplate> 
</asp:FromView> 
+1

где Загрузить Кнопка при загрузке файла –

+0

@Ganesh_Devlekar в ASCX части кнопку один файл по загрузке файла –

+0

я отправил ответ попробовать, что 100% работает –

ответ

0

попробовать это 100% работает

Здесь Ваш FileUpload Управление вложенным в FormView, поэтому я нахожу этот элемент управления ImageButton, а затем добавлен PostBackTrigger к этому управлению. Таким образом, вы можете применить ту же логику к GridView, Repeater, DataList и т.д., и ваш может использовать либо ToolScriptManager или ScriptManager зарегистрировать PostBackControl

использование Изображение кнопки как этот

  <asp:ImageButton ID="ImageButton1" runat="server" 
OnClick="ImageButton1_OnClick" CausesValidation="True" CommandName="Insert" 
    ImageUrl="~/images/save.gif" ValidationGroup="Inser" /> 

на странице .aspx, где ваш импортируют контроль пользователя на использование загрузки страницы это

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      FormView ProductsFormView = (FormView)EditProduct1.FindControl("ProductsFormView"); 

      FindAllTextBoxes(ProductsFormView); 


     } 
    } 



private void FindAllTextBoxes(Control parent) 
    { 
     foreach (Control c in parent.Controls) 
     { 
      if (c.GetType().ToString() == "System.Web.UI.WebControls.ImageButton") 
      { 
       ImageButton ImageButton1 = (ImageButton)c.FindControl("ImageButton1"); 
       if (ImageButton1 != null) 
       { 

        ToolScriptManager1.RegisterPostBackControl(ImageButton1); 
//or ScriptManager.RegisterPostBackControl(ImageButton1); 
       } 
      } 
      if (c.Controls.Count > 0) 
      { 
       FindAllTextBoxes(c); 
      } 
     } 
    } 





protected void ImageButton1_OnClick(object sender, EventArgs e) 
    { 

     ImageButton ImageButton1 = (ImageButton)sender; 
     FormViewRow row = (FormViewRow)ImageButton1.Parent.Parent; 

     FileUpload FileUpload1 = (FileUpload)row.FindControl("FileUpload1"); 

     if (FileUpload1.HasFile) 
     { 

     } 



    } 

, если Вы используете ContentPlace держатель с Мастером страницы затем

ContentPlaceHolder ContentPlaceHolder1 = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1"); 
        ToolkitScriptManager ToolScriptManager1 = (ToolkitScriptManager)ContentPlaceHolder1.FindControl("ToolScriptManager1"); 
        ToolScriptManager1.RegisterPostBackControl(ImageButton1); 
+0

здесь не работает –

+0

, где он не работает, я тестировал свою машину. любая ошибка ?? –

+0

AjaxControlToolkit.ToolkitScriptManager.RegisterPostBackControl (ImageButton1); –