Merhabalar Arkadaşlar, (Not:Lütfen öneri ve sorularınızı yorum olarak atınız. Teşekkürler şimdiden)
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.
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>
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(); }
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, 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 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.
Yorumlar