Разработване на 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; }
}
}
}