简体   繁体   English

在Ajax Modal弹出扩展器中使用fileupload控件

[英]Using fileupload control inside Ajax Modal popup extender

I have a GridView control which displays columns Name, Comments, Image. 我有一个GridView控件,它显示名称,注释,图像列。 When I click on an image I need to open a modal popup extender which will be assigned to a panel that contains a textbox, fileupload control, upload- and cancel button. 当我单击图像时,我需要打开一个模式弹出扩展程序,该扩展程序将分配给一个包含文本框,文件上传控件,上载和取消按钮的面板。

The problem is when I press the update button the button_click event I am not able to find the file inside the FileUpload control where as I can find text inside textbox any help is appreciated. 问题是当我按下update按钮的button_click事件时,我无法在FileUpload控件中找到文件,因为我可以在文本框内找到文本,因此不胜感激。 My code is as follows: 我的代码如下:

<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>

Code behind: 后面的代码:

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();
    }
}

You should register the Fileupload or btnUpload as FullPostBackControl at the ScriptManager 您应该在ScriptManager FileuploadbtnUpload注册为FullPostBackControl

C#: C#:

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

and in VB: 在VB中:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM