Torna al Thread
using System;
using System.Data;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace MitApp.WebTest
{
[ToolboxData("<{0}:TestGrid runat=server></{0}:TestGrid>")]
public partial class TestGrid : System.Web.UI.UserControl
{
// *********************************************************************
// *** Dichiarazione Eventi
// *********************************************************************
/// <summary>Aggiunge un record al gridview</summary>
[Browsable(true)]
public event EventHandler<ImageClickEventArgs> RowAdding;
[Browsable(true)]
public event EventHandler<GridViewCancelEditEventArgs> RowCancelingEdit;
[Browsable(true)]
public event EventHandler<GridViewDeleteEventArgs> RowDeleting;
[Browsable(true)]
public event EventHandler<GridViewEditEventArgs> RowEditing;
[Browsable(true)]
public event EventHandler<GridViewPageEventArgs> PageIndexChanging;
[Browsable(true)]
public event EventHandler<GridViewUpdateEventArgs> RowUpdating;
// *********************************************************************
// *** Proprietà
// *********************************************************************
[Browsable(true)]
[DefaultValue(false)]
public bool AllowPaging
{
get
{
return Grid.AllowPaging;
}
set
{
Grid.AllowPaging = value;
}
}
public object DataSource
{
get
{
return Grid.DataSource;
}
set
{
if (Grid != null)
Grid.DataSource = value;
}
}
public int EditIndex
{
get
{
return Grid.EditIndex;
}
set
{
Grid.EditIndex = value;
}
}
public GridViewRow FooterRow
{
get
{
return Grid.FooterRow;
}
}
/// <summary>Ritorna l'istanza dell'oggetto GridView</summary>
public GridView Grid
{
get
{
return gridView;
}
}
public int PageCount
{
get
{
return Grid.PageCount;
}
}
public int PageIndex
{
get
{
return Grid.PageIndex;
}
set
{
Grid.PageIndex = value;
}
}
/// <summary>Indica se visualizzare il pulsante di aggiunta record</summary>
[Browsable(true)]
[DefaultValue(true)]
public bool ShowInsertButton { get; set; }
// *********************************************************************
// *** Indicizzatori
// *********************************************************************
/// <summary>Ritorna la riga i-esima del GridView</summary>
/// <param name="i">Indice della riga</param>
/// <returns>GridViewRow</returns>
public GridViewRow this[int i]
{
get
{
return (Grid != null)
? Grid.Rows[i]
: null;
}
}
// *********************************************************************
// *** Eventi Page
// *********************************************************************
protected void Page_Load(object sender, EventArgs e)
{
if (Grid != null)
{
Grid.RowCancelingEdit += new GridViewCancelEditEventHandler(OnRowCancelingEdit);
Grid.RowDeleting += new GridViewDeleteEventHandler(OnRowDeleting);
Grid.RowEditing += new GridViewEditEventHandler(OnRowEditing);
Grid.PageIndexChanging += new GridViewPageEventHandler(OnPageIndexChanging);
Grid.RowUpdating += new GridViewUpdateEventHandler(OnRowUpdating);
}
}
// *********************************************************************
// *** Eventi
// *********************************************************************
protected void OnRowAdding(object sender, ImageClickEventArgs e)
{
if (RowAdding != null)
RowAdding(this, e);
}
protected void OnRowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
if (RowCancelingEdit != null)
RowCancelingEdit(this, e);
}
protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (RowDeleting != null)
RowDeleting(this, e);
}
protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
if (RowEditing != null)
RowEditing(this, e);
}
protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e)
{
if (PageIndexChanging != null)
PageIndexChanging(this, e);
}
protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (RowUpdating != null)
RowUpdating(this, e);
}
protected void gridView_RowCreated(object sender, GridViewRowEventArgs e)
{
if ((e.Row.RowType == DataControlRowType.Footer) && (ShowInsertButton))
{
ImageButton ImageBtnAdd = new ImageButton();
ImageBtnAdd.ID = "ImageBtnAdd";
ImageBtnAdd.ImageUrl = "~/Images/Document/Insert.gif";
ImageBtnAdd.OnClientClick = "return confirm('Sei sicuro di voler aggiungere il record?')";
manager.RegisterAsyncPostBackControl(ImageBtnAdd);
e.Row.Cells[0].Controls.Add(ImageBtnAdd);
ImageBtnAdd.Click += new ImageClickEventHandler(OnRowAdding);
ScriptManager.GetCurrent(this.Page).RegisterAsyncPostBackControl(ImageBtnAdd);
}
}
protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Row.RowType == DataControlRowType.Footer) && (ShowInsertButton))
{
DataTable rs = DataSource as DataTable;
if (rs != null)
{
for (int i = 0; i < rs.Columns.Count; i++)
{
DataColumn dc = rs.Columns[i];
TextBox txt = new TextBox();
txt.ID = "txt" + dc.ColumnName;
txt.Width = new Unit(100, UnitType.Percentage);
txt.ReadOnly = dc.AutoIncrement;
e.Row.Cells[i + 2].Controls.Add(txt);
}
}
}
}
// *********************************************************************
// *** Metodi
// *********************************************************************
new public void DataBind()
{
if (Grid != null)
Grid.DataBind();
}
}
}
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestGrid.ascx.cs" Inherits="MitApp.WebTest.TestGrid" %>
<%@ Register Src="~/UI/GridViewPager.ascx" TagName="GridViewPager" TagPrefix="asp" %>
<asp:ScriptManager runat="server" id="manager" />
<asp:UpdatePanel ID="updateGrid" runat="server">
<ContentTemplate>
<asp:GridView ID="gridView"
runat="server"
Width="100%"
ShowFooter="True"
BackColor="White"
BorderColor="#3366CC"
BorderStyle="None"
BorderWidth="1px"
CellPadding="4"
onrowcreated="gridView_RowCreated"
onrowdatabound="gridView_RowDataBound">
<AlternatingRowStyle BackColor="#C2D69B" />
<FooterStyle BackColor="#99CCCC"
ForeColor="#003399" />
<HeaderStyle BackColor="#003399"
Font-Bold="True"
ForeColor="#CCCCFF" />
<PagerSettings Mode="NumericFirstLast" />
<PagerStyle BackColor="#99CCCC"
ForeColor="#003399"
HorizontalAlign="center"
Font-Size="Larger" />
<RowStyle BackColor="White" ForeColor="#003399" />
<SelectedRowStyle BackColor="#009999"
Font-Bold="True"
ForeColor="#CCFF99" />
<SortedAscendingCellStyle BackColor="#EDF6F6" />
<SortedAscendingHeaderStyle BackColor="#0D4AC4" />
<SortedDescendingCellStyle BackColor="#D6DFDF" />
<SortedDescendingHeaderStyle BackColor="#002876" />
<Columns>
<asp:CommandField ButtonType="Image"
ShowEditButton="True"
CancelImageUrl="~/Images/Cursor/Cancel.gif"
DeleteImageUrl="~/Images/Strumenti/Delete.gif"
EditImageUrl="~/Images/Document/Edit.gif"
UpdateImageUrl="~/Images/Cursor/Update.gif" />
<asp:CommandField ButtonType="Image"
ShowDeleteButton="True"
DeleteImageUrl="~/Images/Strumenti/Delete.gif" />
</Columns>
<PagerTemplate>
<asp:GridViewPager ID="pager" runat="Server" />
</PagerTemplate>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>