【发布时间】:2016-05-30 19:59:22
【问题描述】:
我正在尝试从 MySQL 工作台显示下表以显示在 asp.net 上
为了在 asp.net 上显示表格,我使用的是网格视图,代码如下:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" DataKeyNames ="child_id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="SelectFullDetails">Select</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="child_id" HeaderText="Id" />
<asp:BoundField DataField="child_firstname" HeaderText="FirstName" />
<asp:BoundField DataField="parent_surname" HeaderText="Surname" />
<asp:BoundField DataField="club_name" HeaderText="Club" />
</Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewDataBind();
}
}
private void GridViewDataBind()
{
GridView1.DataSource = DetailsAccessLayer.GetAllChildBasicDetails();
GridView1.DataBind();
}
public class ChildBasic
{
public int child_id { get; set; }
public string child_firstname { get; set; }
public string parent_surname { get; set; }
public string club_name { get; set; }
}
public class DetailsAccessLayer
{
public static List<ChildBasic> GetAllChildBasicDetails()
{
List<ChildBasic> listChild = new List<ChildBasic>();
string CS = ConfigurationManager.ConnectionStrings["dbyouthworkConnectionString"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(CS))
{
var InnerJoinClub = "SELECT child_details.child_id, child_details.child_firstname,child_details.parent_surname, enrolment_details.club_name FROM child_details INNER JOIN enrolment_details ON child_details.child_id = enrolment_details.child_id";
MySqlCommand cmd = new MySqlCommand(innerJoinClub, con);
con.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
ChildBasic childbasic = new ChildBasic();
childbasic.child_id = Convert.ToInt32(rdr["child_id"]);
childbasic.child_firstname = rdr["child_firstname"].ToString();
childbasic.parent_surname = rdr["parent_surname"].ToString();
childbasic.club_name = rdr["club_name"].ToString();
listChild.Add(childbasic);
}
}
return listChild;
}
但每次我运行程序时,我都会收到错误:System.Web.dll 中发生了“System.Web.HttpException”类型的异常,但未在用户代码中处理
附加信息:在所选数据源中找不到名为“club_name”的字段或属性。
谁能告诉我代码中的错误以及如何纠正它?
非常感谢
编辑:这是发生错误的地方
private void GridViewDataBind()
{
GridView1.DataSource = DetailsAccessLayer.GetAllChildBasicDetails();
GridView1.DataBind(); }
在 GridView1.DataBind()
【问题讨论】:
-
你能把调试点放到以“var InnerJoinClub = ....”开头的行,看看是哪一行导致了这个错误吗? (也不要忘记 con.Close(); )
-
如果你找不到任何东西,你可以在 using(...) 部分的末尾尝试 rdr[3].ToString() 而不是 rdr["club_name"].ToString() 吗?
-
- 刚刚添加了上面的代码
-
- 尝试了 rdr[3].ToString 并且仍然得到同样的错误
标签: c# mysql gridview inner-join mysql-workbench