我有一个带有SQL DataSource绑定的主网格和详细信息视图,默认情况下在加载期间设置为EditMode。我允许用户在主网格中选择一行以在模态弹出窗口中加载详细信息视图(提供数据键以获取用于加载所选行数据的详细信息视图),并在成功输入时更新detailsview数据到数据库用户更新。
当用户在detailsview中输入意外数据时,我试图使用客户端javascript警报消息向用户显示相应的验证,并允许用户使用模式弹出取消命令选项关闭模态弹出窗口。
注意:这里我没有取消编辑模式(不知道如何在客户端执行此操作)
我面临的问题是,在详细信息视图中输入错误数据后,用户可以选择关闭详细信息视图并重新打开相同的数据(通过选择先前在主网格中选择的同一行)。现在,先前错误的数据被加载到细节中(由用户输入)而不是来自数据库/ SQL数据源的实际/正确数据。
我尝试将DetailsView ViewState设置为'false',并且尽管详细信息视图正在尝试加载数据,但会填充先前的错误值。有人可以帮我解决这个问题。
答案 0 :(得分:0)
我通过在Gridview- onRowSelect 命令上调用DetailsView的数据绑定操作解决了上述问题 注意:对于detailsview,viewstate设置为'false',因此我们始终将数据绑定到DetailsView。在我的场景中,由于我的SQLDataSource(绑定到DetailsView) viewstate设置为true
,因此我不会在任何额外的数据库调用中被调用protected void MainGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "select")
{
//Binds DetailsView with source data, not loading wrong data from edit mode if user selects previously selected same row again
DetailsView.DataBind();
this.mdlPopup.Show();
}
}