【发布时间】:2014-01-01 19:39:11
【问题描述】:
作为一名编程爱好者,我曾尝试复制一些代码from a video I found。该表单使用 LINQ to SQL 将托管共享数据库中的数据绑定到 Gridview。该页面运行良好,直到我在后面的代码中创建了一些与我在视频中看到的非常相似的 C# 代码。 Transaction_ID 是主键和数据表。我已经看了至少十几次视频,但无法确定我的问题。我在这个网站上看到了一些类似的问题,但还没有找到适合我的解决方案。如果我使用选择方法 1,gridview 会填充,但在我使用方法 2 时不会填充。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
DataClasses2DataContext db = new DataClasses2DataContext();
var q = from t in db.Transactions
//selection method 1
//select t;
//selection method 2
select new
{
//ID2 = t.Transaction_ID,
Date = t.Date,
Type = t.Transaction_Type,
Group = t.Group,
Name = t.Name,
Effective_Session = t.Effective_Session
};
e.Result = q;
}
}
这是 ASPX 代码:
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="True" DataKeyNames="Transaction_ID"
DataSourceID="LinqDataSource1">
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="DataClasses2DataContext" EntityTypeName=""
onselecting="LinqDataSource1_Selecting" TableName="Transactions">
</asp:LinqDataSource>
</asp:Content>
这是一段 dbml 代码:
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Transactions")]
public partial class Transaction : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _Transaction_ID;
private string _League;
private string _Season;
private string _Session;
private System.Nullable<System.DateTime> _Date;
private string _Effective_Session;
private string _Team;
private string _Transaction_Type;
private string _Group;
private System.Nullable<double> _Round;
private System.Nullable<double> _Pick;
private System.Nullable<double> _Overall;
private System.Nullable<double> _Player_ID;
private string _Name;
private System.Nullable<double> _F15;
private System.Nullable<double> _F16;
private System.Nullable<double> _F17;
private System.Nullable<double> _F18;
private System.Nullable<int> _F19;
private System.Nullable<double> _F20;
private System.Nullable<int> _F21;
private System.Nullable<int> _F22;
private System.Nullable<double> _F23;
private System.Nullable<double> _F24;
private string _F25;
private System.Data.Linq.Binary _upsize_ts;
#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnTransaction_IDChanging(int value);
partial void OnTransaction_IDChanged();
partial void OnLeagueChanging(string value);
partial void OnLeagueChanged();
partial void OnSeasonChanging(string value);
partial void OnSeasonChanged();
partial void OnSessionChanging(string value);
partial void OnSessionChanged();
partial void OnDateChanging(System.Nullable<System.DateTime> value);
partial void OnDateChanged();
partial void OnEffective_SessionChanging(string value);
partial void OnEffective_SessionChanged();
partial void OnTeamChanging(string value);
partial void OnTeamChanged();
partial void OnTransaction_TypeChanging(string value);
partial void OnTransaction_TypeChanged();
partial void OnGroupChanging(string value);
partial void OnGroupChanged();
partial void OnRoundChanging(System.Nullable<double> value);
partial void OnRoundChanged();
partial void OnPickChanging(System.Nullable<double> value);
partial void OnPickChanged();
partial void OnOverallChanging(System.Nullable<double> value);
partial void OnOverallChanged();
partial void OnPlayer_IDChanging(System.Nullable<double> value);
partial void OnPlayer_IDChanged();
partial void OnNameChanging(string value);
partial void OnNameChanged();
partial void OnF15Changing(System.Nullable<double> value);
partial void OnF15Changed();
partial void OnF16Changing(System.Nullable<double> value);
partial void OnF16Changed();
partial void OnF17Changing(System.Nullable<double> value);
partial void OnF17Changed();
partial void OnF18Changing(System.Nullable<double> value);
partial void OnF18Changed();
partial void OnF19Changing(System.Nullable<int> value);
partial void OnF19Changed();
partial void OnF20Changing(System.Nullable<double> value);
partial void OnF20Changed();
partial void OnF21Changing(System.Nullable<int> value);
partial void OnF21Changed();
partial void OnF22Changing(System.Nullable<int> value);
partial void OnF22Changed();
partial void OnF23Changing(System.Nullable<double> value);
partial void OnF23Changed();
partial void OnF24Changing(System.Nullable<double> value);
partial void OnF24Changed();
partial void OnF25Changing(string value);
partial void OnF25Changed();
partial void Onupsize_tsChanging(System.Data.Linq.Binary value);
partial void Onupsize_tsChanged();
#endregion
public Transaction()
{
OnCreated();
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Name="[Transaction ID]", Storage="_Transaction_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
public int Transaction_ID
{
get
{
return this._Transaction_ID;
}
set
{
if ((this._Transaction_ID != value))
{
this.OnTransaction_IDChanging(value);
this.SendPropertyChanging();
this._Transaction_ID = value;
this.SendPropertyChanged("Transaction_ID");
this.OnTransaction_IDChanged();
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_League", DbType="NVarChar(255)", UpdateCheck=UpdateCheck.Never)]
public string League
{
get
{
这是错误:
DataBinding: '<>f__AnonymousType1`6[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],
[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String,
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089]]' does not contain a property with the name 'Transaction_ID'.
【问题讨论】:
-
您的
GridView上是否将AutoGenerateColumns设置为true? -
你的查询条件好像有逻辑错误。如果您可以发布其余查询的示例?
-
是 AutoGenerateColumns 设置为 true。这是整个查询。我已经在文件后面包含了整个代码。
-
如果不查看标记和数据库,很难猜出哪里出了问题。但我强烈建议浏览 Scott Gu 的博客,特别是这个:LINQ to SQL (Part 9 - Using a Custom LINQ Expression with the <asp:LinqDatasource> control)。你会看到这里实现了类似的方法。
-
谢谢,我会尽快看看。我一直提到的视频是基于这个博客的。如果我将页面代码和部分 dbml 文件添加到我的问题中,它会对我有帮助吗?
标签: c# asp.net sql linq gridview