【发布时间】:2014-12-28 16:28:52
【问题描述】:
我正在尝试使用以下代码通过 LINQ 更新网格视图内联中名为“note”的记录。我的问题是当我运行它并尝试执行updNote_RowUpdating 时,我的项目崩溃了,指出var queryDetails 不包含任何元素。
查看oldValue变量可知其内容如下:
"System.Collections.Specialized.OrderedDictionary+OrderedKeyValueCollection"
数据库由几个客户组成,他们分配了几个笔记,所有这些信息都存储在一个数据库中。
我的代码如下:
ASP.NET:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" class=" table table-bordered table-striped" OnRowEditing="updNoteEdit_RowEditing" OnRowUpdating="updNote_RowUpdating" EnableViewState="false" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnDeleteRec" runat="server" CausesValidation="False" CommandName="select" Text="×" class="close" ForeColor="red" OnClick="btn_delete_Click"></asp:LinkButton>
<asp:Label ID="lblNote" runat="server" Text='<%# Eval("Note") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt_Note" runat="server" Text='<%# Eval("Note") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
C#:
protected void updNote_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
tblBasic currentClient = new tblBasic();
var oldValue = "" + e.OldValues.Values;
var newValue = "" + e.NewValues.Values;
var queryDetails = (from clients in entities.tblBasics
where clients.Note == oldValue
select new
{
clients.Note
}).First();
foreach (var client in entities.tblBasics)
{
currentClient.Note = newValue;
}
entities.SaveChanges();
GridView1.EditIndex = -1;
DataBind();
}
任何帮助将不胜感激。
【问题讨论】:
-
@GrantWinney
仅此系列中的一个。我打算只过滤我需要在 LINQ 语句中更改的注释,并更新那个注释。oldValue是用户看到并打算更改的注释,毕竟生成的文本框中只有一个字符串。