自定义SQL Select语句不在GridView中显示数据

时间:2016-05-03 23:04:34

标签: c# sql asp.net sql-server gridview

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

enter image description here

我让用户在启动时输入一个团队名称,该名称输入到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>

1 个答案:

答案 0 :(得分:1)

根据您的评论,您可能会将数据插入到Team表中,但是当您运行SQL数据源中的select语句时,您会注意到您有Inner JoinInner 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堆叠问题也会有所帮助。