2010-02-05 6 views
0

나는 이름, 설명, 이미지 열을 표시하는 GridView 컨트롤이 있습니다. 이미지를 클릭하면 텍스트 상자, 파일 업로드 컨트롤, 업로드 및 취소 버튼이 포함 된 패널에 할당되는 모달 팝업 익스텐더를 열어야합니다.Ajax 모달 팝업 익스텐더 내에서 fileupload 컨트롤 사용

button_click 업데이트 버튼을 누르면 문제가 발생합니다. FileUpload 컨트롤 내에서 파일을 찾을 수 없습니다. 텍스트 상자 안에 텍스트가 있으면 도움을받을 수 있습니다.

<asp:GridView ID="gdvMngTeam" runat="server" 
    CellPadding="4" 
    AutoGenerateColumns="False" 
    ForeColor="#333333" 
    GridLines="None" 
    Width="100%" 
    DataMember="ID" 
    OnRowCommand="gdvMngTeam_RowCommand"> 
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <RowStyle BackColor="#EFF3FB" Font-Names="Verdana" Font-Size="Small" /> 
    <Columns> 
     <asp:BoundField DataField="ID" HeaderText="ID" Visible="False" /> 
     <asp:BoundField HeaderText="Name" DataField="Name" /> 
     <asp:BoundField HeaderText="Comments" DataField="Comments" /> 
     <asp:TemplateField HeaderText="Photo"> 
      <ItemTemplate> 
       <asp:ImageButton ID="imgbtnPhoto" ImageUrl= '<%# Eval("Image") %>' runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Photo" />     
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
    <EmptyDataTemplate> 
     <asp:Label ID="Label3" runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="Small" ForeColor="Red" Text="No Records Found"></asp:Label> 
    </EmptyDataTemplate> 
    <SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333" Font-Bold="True" /> 
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" Font-Names="Verdana" Font-Size="Medium" /> 
    <EditRowStyle BackColor="#2461BF" /> 
    <AlternatingRowStyle BackColor="White" /> 
</asp:GridView> 

<tr> 
    <td> 
     <asp:Panel ID="Panel1" runat="server"> 
      <table cellpadding="2" cellspacing="2" border="0"> 
       <tr> 
        <td> 
         <asp:Label ID="Label8" runat="server" Text="Upload Photo :" Font-Bold="True" Font-Names="Verdana" Font-Size="Small" ForeColor="White"></asp:Label> 
        </td> 
        <td> 
         <asp:FileUpload ID="fumdpop" runat="server" /><br /> 
         <asp:TextBox ID="tx" runat="server"></asp:TextBox> 
        </td> 
       </tr> 
       <tr> 
        <td colspan="2" style="line-height: 6px;">&nbsp;</td> 
       </tr> 
       <tr> 
        <td colspan="2" align="center"> 
         <asp:Button ID="btnUpload" runat="server" Text="Upload" onclick="btnUpload_Click" />&nbsp;&nbsp; 
         <asp:Button ID="btnfuCancel" runat="server" Text="Cancel" /> 
         &nbsp; 
         <asp:Button ID="btnok" runat="server" Text="OK" /> 
        </td> 
       </tr> 
      </table> 
     </asp:Panel> 
    </td> 
</tr> 
<tr> 
    <asp:Button ID="bt" runat="server" Text="bt" /> 
    <cc1:ModalPopupExtender ID="mdpextPhoto" BackgroundCssClass="backgroundcolor" runat="server" TargetControlID="bt" PopupControlID="Panel1" OkControlID="btnUpload" CancelControlID="btnfuCancel" > 
    </cc1:ModalPopupExtender> 
</tr> 

코드 뒤에 :

ScriptManager curObj = ScriptManager.GetCurrent(Page); 
(if curObj != null) 
     current.RegisterPostBackControl(btnUpload); 

과의 :

protected void gdvMngTeam_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Photo") 
    { 
     ViewState["ID"] = Convert.ToInt16(e.CommandArgument); 

     //AjaxControlToolkit.ModalPopupExtender mpop = (AjaxControlToolkit.ModalPopupExtender)gdvMngTeam.SelectedRow.FindControl(
     mdpextPhoto.Show(); 
    } 
} 

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    string txt = tx.Text; 
    if(fumdpop.HasFile) 
    { 
     string filename = fumdpop.FileName; 
     fumdpop.SaveAs(Server.MapPath("Photos/" + filename)); 
     objTeam.ID = id; 
     objTeam.Image = "photos/" + filename; 
     string resutl = TeamManager.ChangeImage(objTeam); 

     ds = TeamManager.GetTeamDetails(); 
     gdvMngTeam.DataSource = ds.Tables[0]; 
     gdvMngTeam.DataBind(); 
    } 
} 

답변

3

당신은 ScriptManager

의 C#에서 FullPostBackControlFileupload 또는 btnUpload을 등록해야 다음과 같이 내 코드는 VB :

Dim curObj As ScriptManager = ScriptManager.GetCurrent(Page) 
If curObj IsNot Nothing Then 
     curObj.RegisterPostBackControl(btnUpload) 
End If 
관련 문제