【发布时间】:2023-03-13 05:05:02
【问题描述】:
我正在使用 GridView 控件上传文件我正在使用 RowCommand 事件上传,我的场景是这样的
- 用户登录并进入页面上传文件
- 用户登录,输入一些数据并保存,会进行回传,数据将显示在网格中。
上传功能在场景 1 中运行良好,但在场景 2 之后无法运行 这是我的代码
<asp:GridView ID="GVUsers" runat="server" OnRowDataBound="GVUsers_RowDataBound" OnRowCommand="GVUsers_RowCommand"
OnRowDeleting="GVUsers_RowDeleting" AutoGenerateColumns="false" CssClass="table">
<Columns>
<asp:TemplateField HeaderText="Files" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:FileUpload ID="filedoc" runat="server" Width="98%" CssClass="filedoc" />
<asp:Button ID="btnuploadfiles" runat="server" CommandName="fileupd" Text="Upload"
CssClas="uploadbtn" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void GVUsers_RowCommand(Object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "fileupd")
{
//Upload File
}
}
这就是我的数据绑定方式
if(!Page.IsPostBack)
{
//Assigning datasource and DataBinding
}
我也尝试在上述情况后绑定网格,即总是绑定网格,但没有运气
我尝试从后面的代码中分配事件处理程序,但同样的问题。 同样在保存按钮上,我在保存后这样做
protected void btnsave_Click(object sender, EventArgs e)
{
//Assigning datasource and DataBinding
}
根据我的调查,问题出在 btnsave_click,但如果我只使用
GVUsers.DataBind() 它不会在网格中显示新添加的记录。
我也尝试过禁用网格的 ViewState。
我是 DataTable 的数据绑定网格
如何在回发后使 RowCommand 工作,或者如何在回发后重新绑定网格?
【问题讨论】:
-
如果在使用 GVUsers.Databind() 网格后显示,那么它必须是绑定的,那么它没有显示哪些新数据,更新了页面上的行/单元格?还是数据库中的记录?
-
如果我只使用 GVUsers.DataBind(){Not re-assign datasource},网格会被隐藏,但如果我也告诉数据源,那么新记录会出现在网格中
-
上传的文件和用户输入的数据有什么关系?