Pernyataan SQL Select khusus tidak menampilkan data di 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

masukkan deskripsi gambar di sini

Saya meminta pengguna memasukkan nama tim saat start up yang dimasukkan ke dalam tabel Team, yang dialihkan ke halaman web dengan tabel liga. Tabel liga awalnya tidak berisi data tetapi seharusnya menampilkan baris dengan masukan pengguna setelah pengguna membuka halaman ini.

Namun kueri ini menampilkan GridView sebagai kosong. Apakah ada yang salah?

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 sumber
comment
Bagaimana Anda memanggil pertanyaan itu? Dan bagaimana Anda memasukkan hasilnya ke dalam tampilan grid?   -  person Felix Pamittan    schedule 04.05.2016
comment
Bisakah Anda menunjukkan kepada kami kode pengikatan data?   -  person Ismael    schedule 04.05.2016
comment
Saya mengaturnya ke kueri pemilihan SQL khusus di dalam sumber data SQL. Saya telah melampirkan GridView saya ke pertanyaan awal.   -  person A. McLean    schedule 04.05.2016
comment
Dari apa yang Anda katakan, pengguna memasukkan nama tim, yang kemudian ditambahkan ke tabel tim dan kemudian diarahkan ke halaman liga. Jika Anda menyadari bahwa Anda memiliki Gabung Batin pada pilihan Anda. Jika tim ini baru, maka saya sulit percaya sudah ada baris di tabel liga. Dari tata bahasa saja saya bingung 1 tim mempunyai banyak liga. Lagi pula, sudahkah Anda mencoba menjalankan SQL terhadap database secara langsung untuk memastikan bahwa Anda harus menampilkan data?   -  person Adam Heeg    schedule 04.05.2016
comment
Pengguna harus membuat sendiri tabel liga semua tim di sana. Saya tidak bermaksud memiliki satu tim yang memiliki banyak liga, saya tidak yakin dengan hubungan database saya. Ya dan tidak menghasilkan apa pun bahkan ketika saya memiliki daftar tim di tabel Team   -  person A. McLean    schedule 04.05.2016
comment
Yang sebenarnya saya tanyakan adalah ketika saya membuat record untuk tabel Team bagaimana cara membuatnya agar record dibuat di LeagueTable dengan Team_ID yang sama?   -  person A. McLean    schedule 04.05.2016
comment
Pertanyaan itu sebenarnya tidak ada hubungannya dengan apa yang Anda posting. Anda harus membereskan pertanyaan Anda atau menanyakan pertanyaan baru.   -  person Adam Heeg    schedule 04.05.2016
comment
Tahukah Anda mengapa tidak ada data yang diisi dari kueri pemilihan ini? Apa pun yang saya coba tidak menghasilkan apa-apa   -  person A. McLean    schedule 04.05.2016
comment
Saya masih tidak yakin apakah ini masalah data atau masalah implementasi. Bisakah Anda menegaskan bahwa kueri yang Anda miliki pada sumber data sql Anda sebenarnya mengembalikan baris? Jika demikian maka Anda mungkin tidak memanggil DataBind atau sesuatu dalam kode Anda. Anda harus memposting kode itu.   -  person Adam Heeg    schedule 04.05.2016
comment
Pernyataan pilih ini tidak mengembalikan baris apa pun karena tidak ada baris yang dibuat di dalam LeagueTable seperti yang saya inginkan. Saya telah melampirkan di atas metode penyisipan yang saya gunakan.   -  person A. McLean    schedule 04.05.2016
comment
Pernyataan penyisipan Anda tidak menambahkan baris ke LeagueTable, hanya ke Tim. Anda harus menulis sisipan lain untuk menambahkannya ke LeagueTable...   -  person Adam Heeg    schedule 04.05.2016
comment
Saya telah mencoba solusi ini tetapi metode penyisipan saya tidak berhasil. Saya ingin berbagi Team_ID yang sama antar tabel, jadi bagaimana cara melakukannya?   -  person A. McLean    schedule 04.05.2016


Jawaban (1)


Berdasarkan komentar Anda tampaknya Anda mungkin memasukkan data ke dalam tabel Tim Anda, tetapi ketika Anda menjalankan pernyataan pilih yang Anda miliki di Sumber Data SQL Anda, Anda akan melihat Anda memiliki Inner Join. Itu Inner Join berarti jika Id tim tidak ada di salah satu dari 2 tabel yang Anda ikuti maka tidak ada hasil yang akan dikembalikan.

Saya tidak melihat kode sumber data sql Anda, tetapi kemungkinan titik kegagalan lainnya adalah ID Tim yang Anda berikan ke kontrol itu. Ada 3 pertanyaan yang terlintas di benak saya untuk memastikan Anda mendapatkan data yang valid.

1) Dari mana Anda mendapatkannya?

2) Apakah valid dan ada di kedua tabel?

3) Apakah Anda melakukan rebinding gridview setelah menetapkan nilai itu?

Edit

Apa yang ingin Anda lakukan sama sekali tidak sesuai dengan pertanyaan Anda saat ini. Anda harus mengedit judul dan pertanyaan Anda.

Saya akan menggunakan sesuatu seperti ini untuk sisipan Anda.

DECLARE @TeamID as INT
INSERT into Team (Team_name) VALUES (@Team_name)

SELECT @TeamID = SCOPE_IDENTITY();

INSERT into LeagueTable Team_ID VALUES @TeamID

posting ini akan membantu Scope_Identity vs @@Identity

pertanyaan tumpukan ini juga akan membantu.

person Adam Heeg    schedule 04.05.2016
comment
Saya telah menambahkan sumber data SQL untuk Anda. Team_ID ada di kedua tabel dan saya tidak dapat menerapkan GridView1.DataBind(); karena tombol ini mengarah ke halaman lain. - person A. McLean; 04.05.2016
comment
Berhasil! Perlu mengubah sintaks untuk baris terakhir menjadi INSERT into (LeagueTable) Team_ID VALUES (@TeamID) dan kemudian mengubah League_ID menjadi IsIdentity = aktif. Namun, sekarang saya mendapatkan setiap baris memiliki League_ID yang berbeda. Apakah ini penting untuk kueri selanjutnya yang menggunakan tabel ini? Saya tidak ingin tim dipisahkan oleh liga yang berbeda, saya hanya menggunakannya sebagai kunci utama. - person A. McLean; 04.05.2016
comment
Anda memiliki hubungan 1 banding banyak antar tabel - namun komentar Anda sepertinya tidak ada alasan untuk memisahkan 2 tabel. Mengapa Anda memiliki tabel terpisah hanya untuk nama tim? Anda mungkin ingin menggabungkannya menjadi satu tabel. - person Adam Heeg; 04.05.2016
comment
Disarankan oleh orang lain di pertanyaan lain bahwa struktur database saya harus memiliki tata letak ini. Saya memiliki tabel lain yang mengandalkan pengumpulan Team_name seperti tabel Match Statistics yang mengumpulkan Home_Team_ID dan Away_Team_ID yang mendapatkan nama tim dari daftar itu. - person A. McLean; 04.05.2016