我使用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()
它不会在网格中显示新添加的记录。
我也尝试过禁用Grid的ViewState。
我正在使用DataTable数据绑定Grid
如何在回发后让RowCommand工作或者如何在回发后重新设置数据网格?
答案 0 :(得分:0)
为什么不通过ajax调用保存用户输入的数据并稍后刷新页面..这会帮助您避免回拨电话
答案 1 :(得分:0)
这是你需要的一些改变
当您的网页首次加载页面加载事件bind gridview
if(!Page.IsPostBack)
{
//Assigning datasource and DataBinding
}
但是当您再次呼叫GVUsers.DataBind()
时,您需要使用更新的记录重新分配数据源
确保您的grid view
不在更新面板中,如果您使用更新面板,则无法在服务器端获取上传文件
答案 2 :(得分:0)
有时,网格视图的RowCommand事件会停止触发。
您可以尝试的一种解决方案是每次页面回发时重新绑定网格,即将网格绑定逻辑移出if(!Page.IsPostBack)
条件。
您将看到RowCommand事件现在将成功触发。此解决方案的问题在于您将丢失网格中的任何数据捕获,例如行中文本字段中的数据。如果你没有这种情况,那么这个解决方案是安全的。