更新asp.net GridView中的行时出错
Posted
技术标签:
【中文标题】更新asp.net GridView中的行时出错【英文标题】:Error updating row in asp.net GridView 【发布时间】:2019-01-13 09:59:36 【问题描述】:我试图了解为什么在对 GridView 的行执行更新时出现以下错误。
“在更新或删除操作期间未找到键属性值。检查以确保指定为绑定表达式的键属性可用于数据源。”
我已经设置了 GridView 的 DataKeyNames 属性。 奇怪的是,我在 GridView 的同一个项目模板中有 2 个 LinkButton:1 个用于更新,一个用于删除。删除一个正在工作,更新一个没有。
这是页面前端的一段代码
<asp:GridView runat="server" ID="gridView" DataSourceID="listDataSource" AllowPaging="false" AllowSorting="false"
AutoGenerateColumns="false" AutoGenerateDeleteButton="false" AutoGenerateEditButton="false" AutoGenerateSelectButton="false" OnRowCommand="gridView_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<div class="valoriFields">
<asp:DynamicEntity runat="server" Mode="Insert" />
</div>
<div class="buttonsFields buttonsFieldsEnabled">
<asp:LinkButton runat="server" ID="btnSalva" ClientIDMode="Static" CommandName="Update" CssClass="btnSaveMulti" CausesValidation="true">
<span class="icon-save"></span>
</asp:LinkButton>
<asp:LinkButton runat="server" ID="btnDelete" ClientIDMode="Static" CommandName="Delete" CssClass="btnDeleteMulti" CausesValidation="false">
<span class="icon-delete"></span>
</asp:LinkButton>
</div>
<div style="clear:both;"></div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<ef:EntityDataSource ID="listDataSource" runat="server" EnableInsert="false" EnableDelete="true" EnableUpdate="true" OnUpdating="listDataSource_Updating" />
以下是GridView及其DataSource相关的CodeBehind
listDataSource.WhereParameters.Clear();
listDataSource.EntityTypeFilter = entityType.Name;
listDataSource.ContextType = contextType;
listDataSource.EntitySetName = entityType.Name;
listDataSource.AutoGenerateWhereClause = true;
listDataSource.WhereParameters.Add(parentIdName, DbType.Int32, parentID.ToString());
gridView.SetMetaTable(table, table.GetColumnValuesFromRoute(Context));
gridView.DataKeyNames = new string[] IdName ;
谢谢你
【问题讨论】:
【参考方案1】:好的,我发现您必须将 EditIndex 设置为 GridView,所以它似乎可以工作。 现在我想知道它是如何工作的。因为你可以将 EditIndex 设置为 0,不管你试图编辑哪一行都可以。
我认为,当您设置 EditIndex 时,您将 GridView 的状态设置为“编辑”或类似的东西..
知道我还有一个问题……我第一次点击更新按钮时它可以工作,但是在回发之后,如果我尝试点击并保存不同的行,旧的错误就会回来。
有人知道它是如何工作的以及如何解决第二个问题吗?
谢谢
【讨论】:
以上是关于更新asp.net GridView中的行时出错的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET GridView 更新中获取 textarea 中的文本
向导控件中的 Gridview 自定义分页在 asp.net 中无法正常工作
asp.net webforms ajax 更新gridview