我在.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始终为空,然后文件无法正确保存。
任何建议都很棒。
由于
答案 0 :(得分:0)
在Gridview行数据绑定中,您必须找到文件上传控件,然后将其添加到UpdatePanel回发触发器。
答案 1 :(得分:0)
我没有找到解决问题的办法,但我确实解决了这个问题(某种程度上)。我知道只需添加一个指向网格的链接,当用户点击它通过querystring发送ID时,会打开一个新页面来处理整个上传过程并返回已保存文档的URL。
不太理想,但它有效并且让我节省了数小时的挫折感。
答案 2 :(得分:0)
在网格的OnItemDataBound事件处理程序中需要调用ScriptManager.GetCurrent(this).RegisterPostBackControl(ControlID);
答案 3 :(得分: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");
}
然后应该没有问题。