Sunday, June 17, 2012


Разработване на Custom Server Control - XGridView 1.0


Ето, че е време да представя  и един от най новите ми проекти XGridView 1.0

Разработването на custom server control в dot.net е наистина едно интересно и вълнуващо предизвикателство.

Един ден докато си разработвах един сайт ми се наложи да визуализирам данните от базата в html таблица, но забелязах, че винаги ми се налага след това да манипулирам данните
Например: редакция, изтриване, сортиране, странициране, търсене и др.

И всичко това ме хвърли в размисъл, че ще е хубаво това нещо да се изнесе като контрола за да може и в други проекти лесно да се ползва.

Ето и и сайта където може да видите и демо: http://xgridview.apphb.com/




Как да използваме XGridView

XGridView e лесен за използване единственото, което трябва да направите е да свалите
Xsoft.Web.UI.dll файла и да го добавите във вашия проект.

<%@ Register Assembly="Xsoft.Web.UI" Namespace="Xsoft.Web.UI" TagPrefix="xsoft" %>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label runat="server" ID="lblResult"></asp:Label>
<xsoft:XGridView ID="XGridView1" runat="server" AllowSorting="true" AutoGenerateColumns="false"
ShowAdditionalPanel="true" DataKeyNames="ID" OnRowClicked="OnRowClicked_RowClicked">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name"></asp:BoundField>

<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age"></asp:BoundField>

<asp:BoundField DataField="Sex" HeaderText="Sex" SortExpression="Sex"></asp:BoundField>

<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email"></asp:BoundField>

<asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone"></asp:BoundField>
                    </Columns>
                    </xsoft:XGridView>
</ContentTemplate>
</asp:UpdatePanel>
</form>


code behind


       
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.UI;
        using System.Web.UI.WebControls;
        using System.Data;

        namespace TestControl
        {
            public partial class ExampleGridView : System.Web.UI.Page
            {
                private IList Getcontacts()
                {
                    var path = HttpContext.Current.
Server.MapPath(@"contacts.xml");
                    var data = new DataSet();
                    data.ReadXml(path);
                    var contacts = new List();
                    foreach (DataRow row in data.Tables[0].Rows)
                    {
                        contacts.Add(new Contact
                        {
                            ID = Convert.ToInt32(row["ID"]),
                            Name = Convert.ToString(row["Name"]),
                            Age = Convert.ToInt32(row["Age"]),
                            Sex = Convert.ToString(row["Sex"]),
                            Email = Convert.ToString(row["Email"]),
                            Phone = Convert.ToString(row["Phone"]),                   
                        });
                    }
                    return contacts;

                }

                protected override void OnPreRender(EventArgs e)
                {
                    var contacts = Getcontacts();
                    XGridView1.DataSource = contacts;

                    foreach (var item in contacts)
                    {
                        if (item.ID == XGridView1.SelectedDocumentID)
                        {
                            txtbox.Text = item.Name;
                            break;
                        }
                    }

                }

                public class Contact
                {
                    public int ID { get; set; }
                    public string Name { get; set; }
                    public int Age { get; set; }
                    public string Sex { get; set; }
                    public string Email { get; set; }
                    public string Phone { get; set; }           
                }
            }
        }
       


No comments:

Post a Comment