makaleler / Diğer Konular / GridView Nedir?

GridView Nedir?

27.09.2017 11:41:02

C# ASP.NET GridView Özellikleri ile anlatımı

Merhabalar Arkadaşlar, (Not:Lütfen öneri ve sorularınızı yorum olarak atınız. Teşekkürler şimdiden)


GridView Nedir?

Gridview, verileri tablo şeklinde göstermeyi sağlayan özel bir kontroldür. Gridview sayesinde istediğimiz alanları kolay bir şekilde tablo halinde listeleyebiliriz. Bunun DataSource ile ilgili sorgusunu yazarak ilgili Gridview'i listeleyebiliriz.Ya da kod tarafından DataTable ile ilgili verileri DataBind ederek listenenmektedir. Bununla ilgili örnekler aşağıda sıralayacağım.


Datasource ile listeleme yöntemi

Bu kodu aspx kısmına yazarak ya da GridView'in 'property' kısmından datasource setlemesi yaparak ayarlanabilmektedir.


<asp:Panel>
                <asp:GridView ID="grdStokRaporu" AllowPaging="true" PageSize="20" runat="server" DataSourceID="SqlDataSource" AutoGenerateColumns="False" BackColor="#CCCCCC" BorderColor="#258dbf" BorderStyle="Solid" ItemStyle-HorizantalAlignment="center" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="#000000">
                    <Columns>
                        <asp:BoundField DataField="ALAN1" HeaderText="Alan 1" SortExpression="ALAN1" ItemStyle-Width="5%" />
                        <asp:BoundField DataField="ALAN2" HeaderText="Alan 2" SortExpression="ALAN2" ItemStyle-Width="1%" />
                        <asp:BoundField DataField="ALAN3" HeaderText="20" SortExpression="ALAN3" ItemStyle-Width="1%" />
                        <asp:BoundField DataField="ALAN4" HeaderText="40" SortExpression="ALAN4" ItemStyle-Width="1%" />
                    </Columns>
                    <FooterStyle BackColor="#0d4159" />
                    <HeaderStyle BackColor="#0d4159" Font-Bold="True" VerticalAlign="Bottom" ForeColor="White" />
                    <PagerStyle BackColor="#0d4159" ForeColor="White" VerticalAlign="Top" HorizontalAlign="Center" />
                    <RowStyle BackColor="White" HorizontalAlign="center" />
                    <SelectedRowStyle BackColor="#0d4159" Font-Bold="True" ForeColor="White" />
                    <SortedAscendingCellStyle BackColor="#0d4159" />
                    <SortedAscendingHeaderStyle BackColor="#0d4159" />
                    <SortedDescendingCellStyle BackColor="#0d4159" />
                    <SortedDescendingHeaderStyle BackColor="#0d4159" />
                </asp:GridView>
                <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
                    SelectCommand="
                                                      SELECT  
                                                       TABLOADI.ALAN1, 
                                                       TABLOADI.ALAN2, 
                                                       TABLOADI.ALAN3,
                                                       TABLOADI.ALAN4
                                                       FROM TABLOADI                                                      
                                                       WHERE ID= @ID
                                                       and TABLOADI.SART1 >@SART1 
                                                       and TABLOADI.SARTTARIH1 >= @SARTTARIH1                                                                                                            
                                                       ORDER BY CONVERT(DATETIME,TABLOADI.SARTTARIH1, 105) DESC">
                    <SelectParameters>
                        <asp:QueryStringParameter DefaultValue="0" Name="SART1" QueryStringField="SART1" Type="Decimal" />
                        <asp:SessionParameter Name="ID" SessionField="SessionAdi" Type="Decimal" />
                        <asp:ControlParameter ControlID="edSarTarih1" Name="SARTTARIH1" PropertyName="Text" Type="DateTime" />
                    </SelectParameters>

                </asp:SqlDataSource>
            </asp:Panel>

DataBind ile listeleme yöntemi

Bu yöntemde aşağıdaki kodu aspx kısmında kullanıp DataBind kısmını C# tarafında yazmaktayız. C# kodlarını da fonksiyon örneği olarak aşağıda örnekleyeceğim.

aspx kısmı


<asp:Panel>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"  PageSize="6"
                AllowPaging="True" >
                <Columns>
                    <asp:TemplateField HeaderText="Alan 1" ItemStyle-Width="150">
                        <ItemTemplate>
                            <asp:TextBox ID="TextBoxAdi" runat="server" Text='<%# Eval("Name") %>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="TextBox2Adi" HeaderText="Alan2" ItemStyle-Width="150px" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button Text="Select" runat="server"  />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </asp:Panel>

C# tarafı


protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            DatalariDoldur();
        }
    }
 private void DatalariDoldur()
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("TextBoxAdi"), new DataColumn("TextBox2Adi") });
        dt.Rows.Add(1, "A", "1");
        dt.Rows.Add(2, "B", "2");
        dt.Rows.Add(3, "C", "3");
        dt.Rows.Add(4, "D", "4");
        dt.Rows.Add(5, "E", "4");
        dt.Rows.Add(6, "F", "5");
        dt.Rows.Add(7, "G", "6");
        dt.Rows.Add(8, "H", "7");      
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

GridView özellikleri


AllowPaging Özelliği

AllowPagging classı gridview de sayfalama için kullanılmaktadır. Bir sayfaya sığmayacak veriler varsa AllowPaging özelliği true yaparak sayfalayarak listeyebiliriz.PageSize özelliği ile ise bir sayfada kaç verinin bulunacağını belirtebiliriz.


<asp:GridView ID="GridView1" runat="server"   PageSize="6"    AllowPaging="True" >
<!-- Buraya alanlar eklenebilir -->
 </asp:GridView>

OnPageIndexChanging Özelliği


OnPageIndexChanging özelliği, sayfalama yaptığımızda kullanabileceğimiz bir özelliktir. OnPageIndexChanging ile ikinci sayfaya geçtiğimizde ikinci sayfanın bind edilmesini sağlarız.


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"  PageSize="6"
                AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging">
<!-- Buraya alanlar eklenebilir -->
</asp:GridView>

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    DatalariDoldur(); //Dataların bind edildiği fonksiyon çağırılır.Yukarıda örneği bulunmaktadır.
}

OnRowCommand özelliği

OnRowCommand ile gridview'e buton ekleyerek butona OnClick özelliğini kazandırabiliriz.


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand" PageSize="6"
                AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging">
<!-- Buraya alanlar eklenebilir -->
</asp:GridView>

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {        
        int rowIndex = Convert.ToInt32(e.CommandArgument);
       ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Secilen index : " + rowIndex ');", true);
    }
}

Hem OnRowCommand hem de OnPageIndexChanging özelliğini kullandığımızda diğer sayfada onClick özelliğinde yukarıdaki şekilde aşağıdaki hatayı vermektedir.

"An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code"
"Additional information: Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır."

Bu hatanın çözümü de aşağıdaki şekildedir.


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {        
        int rowIndex = Convert.ToInt32(e.CommandArgument) % GridView1.PageSize;
       ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Secilen index : " + rowIndex ');", true);
    }
}

İyi çalışmalar.

yazar okanyurt

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda