0

我在 .aspx 页面中有一个 asp:GridView 控件,用户可以向其中添加几行数据。用户还必须能够将文件附加到添加的每一行数据。

为此,我在 GridView 中使用以下内容:

<asp:TemplateField HeaderText="Upload" HeaderStyle-Width="120px">
     <EditItemTemplate>
         <asp:FileUpload ID="fuUploadLocation" runat="server" Width="98%" TabIndex="18" />
     </EditItemTemplate>
</asp:TemplateField>

然后为了保存文件上传的位置,我在代码隐藏中使用 RowUpdating 事件来设置值等。

问题是我无法为 html 上的控件注册 PostBackTrigger,因为它在 GridView 内部时没有拾取它。我尝试从其他示例中动态设置它,但似乎无法使其正常工作,结果是我的 FileUpload 的 FileName 始终为空,然后文件无法正确保存。

任何建议都会很棒。

谢谢

4

4 回答 4

0

我还没有找到解决我的问题的方法,但我确实解决了它(有点)。我知道只需向网格添加一个链接,当用户单击它通过查询字符串发送 ID 时,会打开一个新页面来处理整个上传过程并返回已保存文档的 url。

不理想,但它有效并为我节省了数小时的挫败感。

于 2012-04-25T09:30:46.650 回答
0

这是一篇旧帖子,但对于任何被它困住的人,您需要将以下内容添加到您的控件中,如其他答案中所述。

protected void ItemDataBound(object sender, EventArgs e)
{
    Button myButton = (Button)e.Item.FindControl("myButton");

    if (myButton != null) 
        ScriptManager.GetCurrent(Page).RegisterPostBackControl(myButton);
}

您还需要将表单标签中的 enctype 更改为以下内容,例如:

protected void Page_PreRender(object sender, EventArgs e)
{
     Page.Form.Attributes.Add("enctype", "multipart/form-data");
}

然后它应该可以正常工作。

于 2015-03-19T11:17:47.643 回答
0

在网格的 OnItemDataBound 事件处理程序中需要调用 ScriptManager.GetCurrent(this).RegisterPostBackControl(ControlID);

于 2012-11-23T18:36:16.053 回答
0

在 Gridview 行数据绑定上,您必须找到文件上传控件,然后将其添加到 UpdatePanel 回发触发器。

于 2012-04-18T08:49:52.080 回答