SELECT
LeagueTable.P,
LeagueTable.W,
LeagueTable.D,
LeagueTable.L,
LeagueTable.GF,
LeagueTable.GA,
LeagueTable.GD,
LeagueTable.Pts,
Team.Team_name,
LeagueTable.Team_ID
FROM LeagueTable
INNER JOIN Team
ON LeagueTable.Team_ID = Team.Team_ID
我让用户在启动时输入一个团队名称,该名称输入到Team
表中,该表重定向到带有联赛表的网页。联盟表最初不包含数据,但是一旦用户进入该页面,它应该显示用户输入的行。
但是,此查询将GridView显示为空白。怎么了?
asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="No teams entered into the table.">
<Columns>
<asp:BoundField DataField="P" HeaderText="P" SortExpression="P" />
<asp:BoundField DataField="W" HeaderText="W" SortExpression="W" />
<asp:BoundField DataField="D" HeaderText="D" SortExpression="D" />
<asp:BoundField DataField="L" HeaderText="L" SortExpression="L" />
<asp:BoundField DataField="GF" HeaderText="GF" SortExpression="GF" />
<asp:BoundField DataField="GA" HeaderText="GA" SortExpression="GA" />
<asp:BoundField DataField="GD" HeaderText="GD" SortExpression="GD" />
<asp:BoundField DataField="Pts" HeaderText="Pts" SortExpression="Pts" />
<asp:BoundField DataField="Team_name" HeaderText="Team_name" SortExpression="Team_name" />
<asp:BoundField DataField="Team_ID" HeaderText="Team_ID" SortExpression="Team_ID" />
</Columns>
</asp:GridView>
protected void NewTeamBtn_Click(object sender, EventArgs e)
{
string qry1 = "INSERT into Team (Team_name) VALUES (@Team_name)";
using (SqlCommand cmd = new SqlCommand(qry1, con))
{
cmd.Parameters.Add(("@Team_name"), SqlDbType.VarChar).Value = NewTeamTxtBox.Text;
cmd.CommandType = CommandType.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
Response.Redirect("EnterData.aspx");
}
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SportsData2ConnectionString %>" SelectCommand="SELECT LeagueTable.League_ID, LeagueTable.Team_ID, LeagueTable.P, LeagueTable.W, LeagueTable.D, LeagueTable.L, LeagueTable.GF, LeagueTable.GA, LeagueTable.GD, LeagueTable.Pts, Team.Team_name FROM LeagueTable INNER JOIN Team ON LeagueTable.Team_ID = Team.Team_ID"></asp:SqlDataSource>
答案 0 :(得分:1)
根据您的评论,您可能会将数据插入到Team表中,但是当您运行SQL数据源中的select语句时,您会注意到您有Inner Join
。 Inner Join
表示如果团队ID不在您加入的2个表中的任何一个表中,则不会返回任何结果。
我没有看到您的sql数据源代码,但另一个可能的失败点是您传入该控件的TeamID。我想到了3个问题,以确保您获得有效的数据。
1)你从哪里得到它?
2)两个表格都有效吗?
3)您在设置该值后重新绑定gridview吗?
修改强>
此时你想做什么根本不符合你的问题。你应该编辑你的标题和问题。
我会使用类似的东西来插入。
DECLARE @TeamID as INT
INSERT into Team (Team_name) VALUES (@Team_name)
SELECT @TeamID = SCOPE_IDENTITY();
INSERT into LeagueTable Team_ID VALUES @TeamID
这篇文章将有助于Scope_Identity vs @@Identity
this堆叠问题也会有所帮助。