คำสั่ง SQL Select แบบกำหนดเองไม่แสดงข้อมูลใน 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

ป้อนคำอธิบายรูปภาพที่นี่

ฉันให้ผู้ใช้ป้อนชื่อทีมเมื่อเริ่มต้นระบบซึ่งป้อนลงในตาราง 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>

person A. McLean    schedule 03.05.2016    source แหล่งที่มา
comment
คุณจะเรียกแบบสอบถามอย่างไร? แล้วคุณจะใส่ผลลัพธ์ลงใน gridview อย่างไร?   -  person Felix Pamittan    schedule 04.05.2016
comment
คุณช่วยแสดงรหัสการผูกข้อมูลให้เราดูได้ไหม   -  person Ismael    schedule 04.05.2016
comment
ฉันได้ตั้งค่าเป็นแบบสอบถามแบบเลือก SQL แบบกำหนดเองภายในแหล่งข้อมูล SQL ฉันได้แนบ GridView กับคำถามเดิมแล้ว   -  person A. McLean    schedule 04.05.2016
comment
จากสิ่งที่คุณพูด ผู้ใช้กรอกชื่อทีม ซึ่งจะถูกเพิ่มลงในตารางทีม จากนั้นจึงเปลี่ยนเส้นทางไปยังหน้าลีก หากคุณสังเกตเห็นว่าคุณมีการเข้าร่วมภายในในการเลือกของคุณ หากเป็นทีมใหม่ ฉันพบว่ามันยากที่จะเชื่อว่ามีแถวอยู่แล้วในตารางลีก แค่ไวยากรณ์ผมสับสนว่า 1 ทีมมีหลายลีก อย่างไรก็ตาม คุณได้ลองใช้ SQL กับฐานข้อมูลโดยตรงเพื่อยืนยันว่าคุณควรมีข้อมูลใดแสดงหรือไม่   -  person Adam Heeg    schedule 04.05.2016
comment
ผู้ใช้จะต้องสร้างตารางลีกของทุกทีมในนั้นเอง ฉันไม่ได้ตั้งใจที่จะมีทีมเดียวที่มีหลายลีก ฉันไม่แน่ใจเกี่ยวกับความสัมพันธ์ของฐานข้อมูล ใช่ และมันไม่ส่งคืนอะไรเลย แม้ว่าฉันจะมีรายชื่อทีมในตาราง Team ก็ตาม   -  person A. McLean    schedule 04.05.2016
comment
สิ่งที่ฉันถามจริงๆ คือเมื่อฉันสร้างบันทึกสำหรับตาราง Team ฉันจะทำอย่างไรเพื่อให้มีการสร้างบันทึกใน LeagueTable ด้วย Team_ID เดียวกัน   -  person A. McLean    schedule 04.05.2016
comment
คำถามนั้นไม่เกี่ยวข้องกับสิ่งที่คุณโพสต์จริงๆ คุณควรล้างคำถามของคุณหรือถามใหม่   -  person Adam Heeg    schedule 04.05.2016
comment
คุณจะรู้ไหมว่าเหตุใดจึงไม่มีการเติมข้อมูลจากแบบสอบถามแบบใช้เลือกข้อมูลนี้ สิ่งใดที่ฉันพยายามไม่ได้ให้อะไรกลับมา   -  person A. McLean    schedule 04.05.2016
comment
ฉันยังไม่แน่ใจว่านี่เป็นปัญหาด้านข้อมูลหรือปัญหาการใช้งาน คุณยืนยันได้ไหมว่าแบบสอบถามที่คุณมีในแหล่งข้อมูล sql ของคุณส่งคืนแถวจริง ๆ ? หากเป็นเช่นนั้น คุณอาจไม่ได้เรียก DataBind หรืออะไรก็ตามในโค้ดของคุณ คุณควรโพสต์รหัสนั้น   -  person Adam Heeg    schedule 04.05.2016
comment
คำสั่ง select นี้จะไม่ส่งคืนแถวใด ๆ เนื่องจากไม่มีแถวที่สร้างขึ้นภายใน LeagueTable เหมือนที่ฉันต้องการ ฉันได้แนบวิธีการแทรกที่ฉันใช้ไว้ด้านบนแล้ว   -  person A. McLean    schedule 04.05.2016
comment
คำสั่งแทรกของคุณไม่ได้เพิ่มแถวลงใน LeagueTable แต่เพิ่มลงในทีมเท่านั้น คุณต้องเขียนส่วนแทรกอื่นเพื่อเพิ่มลงใน LeagueTable...   -  person Adam Heeg    schedule 04.05.2016
comment
ฉันได้ลองใช้วิธีนี้แล้ว แต่วิธีการแทรกของฉันไม่สามารถใช้งานได้ ฉันต้องการแชร์ Team_ID เดียวกันระหว่างตาราง ฉันควรทำอย่างไร   -  person A. McLean    schedule 04.05.2016


คำตอบ (1)


จากความคิดเห็นของคุณ ดูเหมือนว่าคุณอาจกำลังแทรกข้อมูลลงในตาราง Team ของคุณ แต่เมื่อคุณรันคำสั่ง select ที่คุณมีในแหล่งข้อมูล SQL คุณจะสังเกตเห็นว่าคุณมี Inner Join Inner Join นั้นหมายความว่าหากรหัสทีมไม่อยู่ในตารางใดตารางหนึ่งจาก 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 กับ @@Identity

คำถามสแต็ก นี้จะช่วยได้เช่นกัน

person Adam Heeg    schedule 04.05.2016
comment
ฉันได้เพิ่มแหล่งข้อมูล SQL ให้คุณแล้ว Team_ID อยู่ในทั้งสองตาราง และฉันไม่สามารถใช้ GridView1.DataBind(); ได้เนื่องจากปุ่มนี้นำไปสู่หน้าอื่น - person A. McLean; 04.05.2016
comment
มันได้ผล! จำเป็นต้องเปลี่ยนไวยากรณ์สำหรับบรรทัดสุดท้ายเป็น INSERT into (LeagueTable) Team_ID VALUES (@TeamID) จากนั้นเปลี่ยน League_ID เป็น IsIdentity = on อย่างไรก็ตาม ตอนนี้ฉันพบว่าแต่ละแถวมี League_ID ที่แตกต่างกัน สิ่งนี้สำคัญสำหรับการสืบค้นในภายหลังที่ใช้ตารางนี้หรือไม่ ฉันไม่ต้องการให้ทีมถูกแยกออกจากลีกต่างๆ ฉันแค่ใช้มันเป็นคีย์หลักเท่านั้น - person A. McLean; 04.05.2016
comment
คุณมีความสัมพันธ์แบบ 1 ถึงกลุ่มระหว่างตาราง - อย่างไรก็ตาม ความคิดเห็นของคุณดูเหมือนไม่มีเหตุผลที่จะต้องแยก 2 ตารางออกจากกัน ทำไมคุณถึงมีโต๊ะแยกเฉพาะชื่อทีม? คุณอาจต้องการรวมไว้ในตารางเดียว - person Adam Heeg; 04.05.2016
comment
ผู้อื่นแนะนำในคำถามอื่นว่าโครงสร้างฐานข้อมูลของฉันควรมีเค้าโครงนี้ ฉันมีตารางอื่นที่ต้องอาศัยการรวบรวม Team_name เช่นตาราง Match Statistics ที่รวบรวม Home_Team_ID และ Away_Team_ID ที่ได้รับชื่อทีมจากรายการนั้น - person A. McLean; 04.05.2016