Asp.net Yorum Sistemi

Asp.net ile oluşturduğunuz sitelerde girilen haberler ile ilgili olarak ziyaretçilerin mesaj veya yorum yazabilmesi için gerekli olan yorum sistemini basit bir örnekle açıklamaya çalışacağım.
İlk olarak haberleri ve yorumları kaydedebilmek için bir veritabanı ve tablolar oluşturmamız gerekli uygulamamda kullandığım tablolar ve yapıları aşağıdaki gibidir.
aspnetyorumsistemi
Veritabanını oluşturduktan sonra projemizin üzerinde sağ tıklayarak Add-Add Asp.Net Folder-App_Data seçenekleri ile App_Data klasörünü sisteme dahil ediyoruz daha sonra oluşturduğumuz veritabanını sisteme eklemek için App_Data klasörü üzerinde sağ tıklayıp Add-Existing item- seçeneğinden veritabanımızı seçip projemize ekliyoruz.
aspnetyorumsistemi1
İlk olarak haberleri görüntülemek için gerekli olan sayfamızı hazırlayacağız bunun için form üzerine bir GridView ve bir AccessDataSource ekleyerek gerekli ayarlamaları yapıyoruz
kodlarımız..:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="haberid" DataSourceID="AccessDataSource1" CellPadding="4" 
            ForeColor="#333333" GridLines="None">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                   <asp:BoundField DataField="baslik" HeaderText="Haber Başlığı" 
                    SortExpression="baslik" />
                <asp:BoundField DataField="haber" HeaderText="Haber" SortExpression="haber" />
                <asp:HyperLinkField DataNavigateUrlFields="haberid" 
                    DataNavigateUrlFormatString="haberoku.aspx?id={0}" DataTextField="haberid" 
                    Text="Devamı" DataTextFormatString="Devamı" />
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
            DataFile="~/App_Data/haber.accdb" SelectCommand="SELECT * FROM [haberler]">
        </asp:AccessDataSource>
        </div>
    </form>
</body>
</html>

aspnetyorumsistemi2
Şimdi de haberlerin detayları ve yorum ekleme bölümü için haberoku sayfamızı yapacağız.
Haberoku sayfasında haberin detayları için bir GridView ve AccessDataSource , yorumları görüntülemek için yine GridView ve AccessDataSource ekliyoruz yalnız bunları Updatepanel içerisine ekleyerek sadece bu alanda sayfalama veya yenileme işleminin geçerli olmasını sağlıyoruz ve son olarak da orum girişi içim bir form ekliyoruz.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="haberid"
            DataSourceID="AccessDataSource1">
            <Columns>
             
                <asp:BoundField DataField="baslik" HeaderText="baslik" 
                    SortExpression="baslik" />
                <asp:BoundField DataField="haber" HeaderText="haber" SortExpression="haber" />
            </Columns>
        </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/haber.accdb"
            SelectCommand="SELECT * FROM [haberler] WHERE ([haberid] = ?)">
            <SelectParameters>
                <asp:QueryStringParameter Name="haberid" QueryStringField="id" Type="Int32" />
            </SelectParameters>
        </asp:AccessDataSource>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
                    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="yorumid" 
                    DataSourceID="AccessDataSource2" CellPadding="4" ForeColor="#333333" 
                    GridLines="None">
                    <AlternatingRowStyle BackColor="White" />
                    <Columns>
                        
                        <asp:BoundField DataField="adsoyad" HeaderText="adsoyad" 
                            SortExpression="adsoyad" />
                        <asp:BoundField DataField="mail" HeaderText="mail" SortExpression="mail" />
                        <asp:BoundField DataField="mesaj" HeaderText="mesaj" SortExpression="mesaj" />
                    </Columns>
                    <EditRowStyle BackColor="#7C6F57" />
                    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                    <RowStyle BackColor="#E3EAEB" />
                    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                    <SortedAscendingCellStyle BackColor="#F8FAFA" />
                    <SortedAscendingHeaderStyle BackColor="#246B61" />
                    <SortedDescendingCellStyle BackColor="#D4DFE1" />
                    <SortedDescendingHeaderStyle BackColor="#15524A" />
                </asp:GridView>
                <asp:AccessDataSource ID="AccessDataSource2" runat="server" 
                    DataFile="~/App_Data/haber.accdb" 
                    SelectCommand="SELECT * FROM [yorumlar] WHERE ([haberid] LIKE '%' + ? + '%') ORDER BY [haberid] DESC">
                    <SelectParameters>
                        <asp:QueryStringParameter Name="haberid" QueryStringField="id" />
                    </SelectParameters>
                </asp:AccessDataSource>
            </ContentTemplate>
          
        </asp:UpdatePanel>
         <table class="style1">
                        <tr>
                            <td class="style3">
                                <span lang="tr">Adı</span>
                            </td>
                            <td>
                                <asp:TextBox ID="adi" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="style3">
                                <span lang="tr">Soyadı</span>
                            </td>
                            <td>
                                <asp:TextBox ID="soyadi" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="style3">
                                <span lang="tr">Mesajı</span>
                            </td>
                            <td>
                                <asp:TextBox ID="mesaj" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="style3">
                                <asp:Label ID="Label1" runat="server"></asp:Label>
                            </td>
                            <td>
                                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="yorumekle" />
                            </td>
                        </tr>
                    </table>
    </div>
    </form>
</body>
</html>

aspnetyorumsistemi3
Sayfamıza yorumları eklemek ve hangi haberin görüntülendiğini tespit etmek içinde aşağıdaki kodları giriyoruz

protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = Request.QueryString["id"];

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            OleDbConnection db_baglanti;

            db_baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("~/App_Data/haber.accdb"));
            db_baglanti.Open();
            OleDbCommand com = new OleDbCommand(" insert into yorumlar (haberid,adsoyad,mail,mesaj) values(@haberid,@adsoyad,@mail,@mesaj)", db_baglanti);
            com.Parameters.Add("@haberid", OleDbType.Variant).Value =Int16.Parse(Label1.Text);
            com.Parameters.Add("@adsoyad", OleDbType.Variant).Value = adi.Text;
            com.Parameters.Add("@mail", OleDbType.Variant).Value = soyadi.Text;
            com.Parameters.Add("@mesaj", OleDbType.Variant).Value = mesaj.Text;
            int x = com.ExecuteNonQuery();
            if (x > 0)
            {
            }
            com.Dispose();
            db_baglanti.Close();
           GridView2.DataSourceID = "AccessDataSource2";
            GridView2.DataBind();
        }