Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在ajax面板中向用户发送文件_Asp.net_Ajax_Telerik - Fatal编程技术网

Asp.net 如何在ajax面板中向用户发送文件

Asp.net 如何在ajax面板中向用户发送文件,asp.net,ajax,telerik,Asp.net,Ajax,Telerik,我有一个radgrid,每行都有一个按钮向用户发送一个文件。网格位于更新面板中,保持这种状态至关重要。有没有一种方法可以覆盖ajax面板?我不能将按钮放在面板外,因为它位于网格内,因此无法执行任何操作。我如何调用这个 我的AjaxPanel: <telerik:RadAjaxPanel runat="server"> <p style="font-family: Arial;">טבלת סוכנים</p>

我有一个radgrid,每行都有一个按钮向用户发送一个文件。网格位于更新面板中,保持这种状态至关重要。有没有一种方法可以覆盖ajax面板?我不能将按钮放在面板外,因为它位于网格内,因此无法执行任何操作。我如何调用这个

我的AjaxPanel:

            <telerik:RadAjaxPanel runat="server">
            <p style="font-family: Arial;">טבלת סוכנים</p>
            <telerik:RadGrid  runat="server" ID="gvClients" ClientSettings-EnablePostBackOnRowClick="true" CellSpacing="0" GridLines="None" Skin="Glow" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" OnSelectedIndexChanged="gvClients_SelectedIndexChanged" OnDataBound="gvClients_DataBound" AutoGenerateColumns="False">
                <ClientSettings>
                    <Selecting AllowRowSelect="True" />
                </ClientSettings>
                <MasterTableView DataKeyNames="id" DataSourceID="SqlDataSource1" HierarchyLoadMode="Client">
                    <Columns>
                        <telerik:GridBoundColumn DataField="seniorId" DataType="System.Int32" FilterControlAltText="Filter seniorId column" HeaderText="seniorId" SortExpression="seniorId" UniqueName="seniorId" Visible="False">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="id" DataType="System.Int32" FilterControlAltText="Filter id column" HeaderText="תעדות זהות" ReadOnly="True" SortExpression="id" UniqueName="id">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="password" FilterControlAltText="Filter password column" HeaderText="סיסמא" SortExpression="password" UniqueName="password">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="fName" FilterControlAltText="Filter fName column" HeaderText="שם פרטי" SortExpression="fName" UniqueName="fName">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="lName" FilterControlAltText="Filter lName column" HeaderText="שם משפחה" SortExpression="lName" UniqueName="lName">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="mPhone" FilterControlAltText="Filter mPhone column" HeaderText="מספר טלפון" SortExpression="mPhone" UniqueName="mPhone">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="address" FilterControlAltText="Filter address column" HeaderText="כתובת" SortExpression="address" UniqueName="address">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="sc" DataType="System.Byte" FilterControlAltText="Filter sc column" HeaderText="sc" SortExpression="sc" UniqueName="sc" Visible="False">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="email" FilterControlAltText="Filter email column" HeaderText="אימייל" SortExpression="email" UniqueName="email">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="dateJoined" DataFormatString="{0:HH:mm dd-MM-yyyy}" DataType="System.DateTime" FilterControlAltText="Filter dateJoined column" HeaderText="תאריך הצטרפות" SortExpression="dateJoined" UniqueName="dateJoined">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="contract" FilterControlAltText="Filter contract column" HeaderText="קובץ חוזה" SortExpression="contract" UniqueName="contract" Visible="False">
                            <ColumnValidationSettings>
                                <ModelErrorMessage Text="" />
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>
                        <telerik:GridTemplateColumn HeaderText="הורד קובץ" UniqueName="downloadcolumn">
                            <ItemTemplate>
                                <telerik:RadButton runat="server" CommandArgument="<%#Container.ItemIndex %>" OnCommand="btnDownload_Command1" id="btnDownload" Text="הורד"/>
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>

                    </Columns>
                    <PagerStyle AlwaysVisible="True" />
                </MasterTableView>
            </telerik:RadGrid>
            <br />
            <br />
            <table style="float: right; display: inline-block;">
                <tr>
                    <td class="auto-style1">
                        <p>תעודת זהות</p>
                    </td>
                    <td>
                        <telerik:RadTextBox runat="server" MaxLength="9" ID="txtId" Width="200px" Skin="Glow" /></td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>סיסמא</p>
                    </td>
                    <td>
                        <telerik:RadTextBox ID="txtPassword" MaxLength="25" runat="server" Width="200px" Skin="Glow" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>שם פרטי</p>
                    </td>
                    <td>
                        <telerik:RadTextBox ID="txtfName" MaxLength="25" runat="server" Width="200px" Skin="Glow" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>שם משפחה</p>
                    </td>
                    <td>
                        <telerik:RadTextBox ID="txtlName" MaxLength="25" runat="server" Width="200px" Skin="Glow" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>מספר טלפון</p>
                    </td>
                    <td>
                        <telerik:RadTextBox ID="txtmPhone" MaxLength="25" runat="server" Width="200px" Skin="Glow" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>כתובת</p>
                    </td>
                    <td>
                        <telerik:RadTextBox ID="txtAddress" MaxLength="50" runat="server" Width="200px" Skin="Glow" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>אימייל</p>
                    </td>
                    <td>
                        <telerik:RadTextBox ID="txtEmail" MaxLength="50" runat="server" Width="200px" Skin="Glow" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <telerik:RadButton ID="btnUpdate" runat="server" Skin="Glow" Width="126px" Text="עדכן" OnClick="btnUpdate_Click" Enabled="False" />
                    </td>
                    <td>
                        <telerik:RadButton ID="btnDelete" runat="server" Width="83px" Skin="Glow" Text="מחק" OnClick="btnDelete_Click" Enabled="False" />
                        <telerik:RadButton ID="btnAdd" runat="server" Width="84px" Skin="Glow" Text="הוסף" OnClick="btnAdd_Click" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <p>צרף חוזה</p>
                    </td>
                    <td>
                        <telerik:RadAsyncUpload ID="AsyncUpload" MultipleFileSelection="Disabled" MaxFileInputsCount="1" runat="server" Skin="Metro" Enabled="false">
                            <Localization Select="בחר קובץ" />
                        </telerik:RadAsyncUpload>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style1">
                        <asp:Label runat="server" ID="lblDone" Text="הפעולה בוצעה בהצלחה" ForeColor="Red" Visible="false" /></td>
                    <td>
                        <telerik:RadButton ID="btnUpload" OnClick="btnUpload_Click" Enabled="false" runat="server" Skin="Glow" Text="העלה קובץ" Width="175px" />
                    </td>
                </tr>
            </table>
        </telerik:RadAjaxPanel>

文件下载功能已经过检查,工作正常。我有100%的把握,问题出在updatePanel中。

我遇到了与您完全相同的问题,Rad Ajax面板不支持文件上传和操作,因为这需要完整的回发,面板只支持Ajax部分调用。我们通过在Ajax面板之外运行的模式对话框中实现文件处理程序来解决这个问题

希望这会有所帮助

应该是这样的:

 protected void btnDownload_Command1(object sender, CommandEventArgs e)
{
    GridDataItem item = gvClients.Items[Convert.ToInt32(e.CommandArgument)];
    GetUserData usr = new GetUserData(item["id"].Text, Security.level.Agent, servermap);
    string file = usr.RetrieveContractPath();
   // SendFileDownload(file); dont call it here , call it in the other window

string url = "PopupFileDownload.aspx?file="+file;
    string s = "window.open('" + url + "', 'popup_window', 'width=300,height=100,left=100,top=100,resizable=yes');";

    ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);

}
//然后在popupFileDownload.aspx中,按如下方式处理页面加载:

protected void Page_Load(Object sender, EventArgs e)
{

 SendFileDownload(Request.QueryString["file"]);

}

更简单的方法是在网格外添加一个不可见的服务器按钮,并通过javascript调用它的回发。这是按钮:

<asp:Button ID="cmdDownload" runat="server" Visible="False" />

然后,添加一些javascript,如下所示:

<script type="text/javascript">
    function goFile(id) { __doPostBack('<%=cmdDownload.UniqueID %>', id);}
</script>
<ItemTemplate>
    <button type="button" onclick="goFile('<%#Container.ItemIndex%>')">הורד</button>
</ItemTemplate>

函数goFile(id){uu doPostBack('',id);}
接下来,在网格中修改按钮,如下所示:

<script type="text/javascript">
    function goFile(id) { __doPostBack('<%=cmdDownload.UniqueID %>', id);}
</script>
<ItemTemplate>
    <button type="button" onclick="goFile('<%#Container.ItemIndex%>')">הורד</button>
</ItemTemplate>

הורד
当下载按钮单击事件触发时,您可以通过
Request.Params(“\uu EventArgument”)
获取项目的索引,并将文件发送给用户


您可能需要对代码进行一些调整以使其正常工作,但我已经在许多情况下成功地使用了它。

这听起来太复杂了,我目前无法理解。我想我可以在这个网络表单上告别ajax。查看编辑,它并不太复杂,但我想这取决于你是否真的需要ajax。出于某种原因,弹出窗口无法工作。可能是我的浏览器阻止了它吗?我没有看到弹出窗口被阻止的消息,此外,当调试时,这些代码行被相应地调用,没有错误。编辑:它不能是我的浏览器。我尝试了4种不同的浏览器,得到了相同的结果。但需要注意的是,我使用的是Telerik的Ajax面板,而不是ASP。因为telerik支持在面板中包含表,所以我认为问题仍然在于Ajax面板。telerik Ajax面板正在阻止弹出。虽然您的解决方案更智能、更简单,但它需要我使用html按钮,而html按钮的外观远不如telerik的控件。但这将在不久的将来派上用场。谢谢您可以在ItemTemplate中使用任何其他HTML。您所需要做的就是处理onclick事件来触发javascript。如果您愿意,您可以查看Telerik按钮的呈现HTML并使用它。