⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultcs.aspx.cs

📁 Telerik是很大的第三方软件制造商
💻 CS
字号:
using System;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Globalization;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.QuickStart;
using Telerik.WebControls;

namespace Telerik.GridExamplesCSharp.DataEditing.ExtractValues
{
	public class DefaultCS : XhtmlPage
	{
		protected System.Web.UI.WebControls.DataGrid DataGrid1;
		protected System.Web.UI.WebControls.Button Button1;
		protected System.Web.UI.WebControls.LinkButton Linkbutton2;
		protected System.Web.UI.WebControls.LinkButton Linkbutton1;
		protected System.Web.UI.WebControls.LinkButton Linkbutton4;
		protected System.Web.UI.WebControls.Label Label1;
		protected System.Web.UI.WebControls.CheckBox CheckBox1;
		protected System.Web.UI.WebControls.CustomValidator CustomValidator1;
		protected System.Web.UI.WebControls.TextBox TextBox1;
		protected System.Web.UI.WebControls.CheckBox CheckBox2;
		protected Telerik.WebControls.GridTextBoxColumnEditor TextEditor1;
		protected Telerik.WebControls.RadGrid RadGrid1;
			
		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		///		Required method for Designer support - do not modify
		///		the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.CheckBox1.CheckedChanged += new System.EventHandler(this.CheckBox1_CheckedChanged);
			this.CheckBox2.CheckedChanged += new System.EventHandler(this.CheckBox2_CheckedChanged);
			this.RadGrid1.NeedDataSource += new Telerik.WebControls.GridNeedDataSourceEventHandler(this.RadGrid1_NeedDataSource);
			this.RadGrid1.InsertCommand += new Telerik.WebControls.GridCommandEventHandler(this.RadGrid1_InsertCommand);
			this.RadGrid1.PreRender += new System.EventHandler(this.RadGrid1_PreRender);
			this.RadGrid1.UpdateCommand += new Telerik.WebControls.GridCommandEventHandler(this.RadGrid1_UpdateCommand);
			this.RadGrid1.CreateColumnEditor += new Telerik.WebControls.GridCreateColumnEditorEventHandler(this.RadGrid1_CreateColumnEditor);
			this.RadGrid1.ItemCommand += new Telerik.WebControls.GridCommandEventHandler(this.RadGrid1_ItemCommand);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		public DataSet OrdersData
		{
			get
			{
				object obj = this.Session["OrdersData"];
				if ( obj != null )
				{
					return (DataSet)obj;
				}

				DataSet ordersData = new DataSet();

				OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("~/Grid/Data/Access/Nwind.mdb"));new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("~/Data/Access/Nwind.mdb"));
				OleDbDataAdapter adapter = new OleDbDataAdapter();
				adapter.SelectCommand = new OleDbCommand(
					@"SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode, Bool FROM Customers", conn);

				adapter.Fill( ordersData, "Customers" );

				adapter.SelectCommand = new OleDbCommand(@"SELECT Orders.*, (E.FirstName + ' ' + E.LastName) AS EmployeeName
						FROM Orders, Employees E Where Orders.EmployeeID = E.EmployeeID", conn);
				adapter.Fill( ordersData, "Orders" );

				adapter.SelectCommand = new OleDbCommand("SELECT EmployeeID, (FirstName + ' ' + LastName) AS FullName FROM Employees", conn);
				adapter.Fill( ordersData, "Employees" );

				this.Session["OrdersData"] = ordersData;

				return ordersData;
			}
		}

		private void RadGrid1_NeedDataSource(object source, Telerik.WebControls.GridNeedDataSourceEventArgs e)
		{
			RadGrid1.DataSource = this.OrdersData;
		}

		private void Page_Load(object sender, System.EventArgs e)
		{
			Label1.Text = string.Empty;
			if ( !IsPostBack )
			{
				this.Session["OrdersData"] = null;
			}
		}

		private void RadGrid1_ItemCommand(object source, Telerik.WebControls.GridCommandEventArgs e)
		{
			if ( e.CommandName == "Update" )
			{
				Page.Validate();
				if ( !Page.IsValid )
				{
					//UpdateCommand event will not fire
					e.Canceled = true;
					return;
				}
			}
		}

		private void RadGrid1_UpdateCommand(object source, Telerik.WebControls.GridCommandEventArgs e)
		{
			GridEditableItem editedItem = e.Item as GridEditableItem;
			DataTable ordersTable = this.OrdersData.Tables["Orders"];

			//Locate the changed row in the DataSource
			DataRow[] changedRows = ordersTable.Select( "OrderID = " + editedItem["OrderID"].Text );
			
			if (changedRows.Length != 1)
			{
				this.Label1.Text += "Unbale to locate the Order for updating.";
				e.Canceled = true;
				return;
			}

			//Update new values
			Hashtable newValues = new Hashtable();
			//The GridTableView will fill the values from all editable columns in the hash
			e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);

			DataRow changedRow = changedRows[0];
			changedRow.BeginEdit();
			try
			{					
				foreach( DictionaryEntry entry in newValues )
				{
					changedRow[(string)entry.Key] = entry.Value;
				}
				changedRow.EndEdit();
			}
			catch( Exception ex )
			{
				changedRow.CancelEdit();
				Label1.Text += "Unable to update Orders. Reason: " + ex.Message;
				e.Canceled = true;
			}

			//Code for updating the database can go here...
			Label1.Text += "Order " + changedRow["OrderID"] + " updated";
		}

		private void RadGrid1_InsertCommand(object source, GridCommandEventArgs e)
		{
			GridEditableItem editedItem = e.Item as GridEditableItem;
			DataTable ordersTable = this.OrdersData.Tables["Orders"];

			DataRow newRow = ordersTable.NewRow();

			//As this example demonstrates only in-memory editing, a new primery key value should be generated
			//This should not be applied when updating directly the database
			DataRow[] allValues = ordersTable.Select( "", "OrderID", DataViewRowState.CurrentRows );
			if (allValues.Length > 0)
			{
				newRow["OrderID"] = (int)allValues[allValues.Length - 1]["OrderID"] + 1;
			}
			else
			{
				newRow["OrderID"] = 1; //the table is empty;
			}

			//Set new values
			Hashtable newValues = new Hashtable();
			//The GridTableView will fill the values from all editable columns in the hash
			e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);

			try
			{
				foreach( DictionaryEntry entry in newValues )
				{
					newRow[(string)entry.Key] = entry.Value;
				}
			}
			catch( Exception ex )
			{
				Label1.Text += "Unable to insert into Orders. Reason: " + ex.Message;
				e.Canceled = true;
			}

			ordersTable.Rows.Add( newRow );
			//Code for updating the database ca go here...

			Label1.Text += "Order " + newRow["OrderID"] + " inserted" ;
		}

		private void RadGrid1_CreateColumnEditor(object sender, Telerik.WebControls.GridCreateColumnEditorEventArgs e)
		{
			if ( e.Column is GridBoundColumn )
			{
				if ( (e.Column as GridBoundColumn).DataField == "ShipAddress" )
				{
					e.ColumnEditor = new MultiLineTextBoxColumnEditor();
				}
				else if ( (e.Column as GridBoundColumn).DataField == "OrderDate" )
				{
					e.ColumnEditor = new DateColumnEditor();
				}
			}
		}

		private void RadGrid1_PreRender(object sender, System.EventArgs e)
		{
			if ( !this.IsPostBack )
			{
				this.RadGrid1.MasterTableView.Items[1].Edit = true;
				this.RadGrid1.MasterTableView.Rebind();
			}
		}

		private void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
		{
			if (CheckBox1.Checked)
			{
				RadGrid1.MasterTableView.EditMode = GridEditMode.EditForms;
			}
			else
			{
				RadGrid1.MasterTableView.EditMode = GridEditMode.InPlace;
			}

			RadGrid1.Rebind();
		}

		private void CheckBox2_CheckedChanged(object sender, System.EventArgs e)
		{
			this.RadGrid1.AllowMultiRowEdit = CheckBox2.Checked;
		}		

		#region CustomEditors declaration

		private class MultiLineTextBoxColumnEditor: GridTextColumnEditor
		{
			private TextBox textBox;

			protected override void LoadControlsFromContainer()
			{
				this.textBox = this.ContainerControl.Controls[1] as TextBox;
			}

			public override bool IsInitialized
			{
				get
				{
					return this.textBox != null;
				}
			}

			public override string Text
			{
				get
				{
					return this.textBox.Text;
				}
				set
				{
					this.textBox.Text = value;
				}
			}

			protected override void AddControlsToContainer()
			{
				this.ContainerControl.Controls.Add( new LiteralControl("<b>Custom multi-line text editor</b><br />") );

				this.textBox = new TextBox();

				this.textBox.TextMode = TextBoxMode.MultiLine;
				this.textBox.Rows = 4;
				this.textBox.Columns = 40;
				this.textBox.BackColor = ((Color)new WebColorConverter().ConvertFromString("#EDEDED"));

				this.ContainerControl.Controls.Add(this.textBox);
			}
		}

		private class DateColumnEditor: GridTextColumnEditor
		{
			private TextBox textBox;
			private CustomValidator validator;
			private RequiredFieldValidator reqValidator;

			protected override void LoadControlsFromContainer()
			{
				this.textBox = this.ContainerControl.Controls[1] as TextBox;
			}

			public override bool IsInitialized
			{
				get
				{
					return this.textBox != null;
				}
			}

			public override string Text
			{
				get
				{
					return this.textBox.Text;
				}
				set
				{
					this.textBox.Text = value;
				}
			}

			protected override void AddControlsToContainer()
			{
				this.ContainerControl.Controls.Add( new LiteralControl("<b>Custom date column editor with validator</b><br />") );

				this.textBox = new TextBox();

				this.ContainerControl.Controls.Add(this.textBox);

				this.validator = new CustomValidator();
				this.textBox.ID = "tbDate";
				this.validator.ServerValidate += new ServerValidateEventHandler( this.ValidateDate );
				this.validator.ControlToValidate = this.textBox.ID;
				this.validator.ErrorMessage = " Please, enter a valid date";

				this.reqValidator = new RequiredFieldValidator();
				this.reqValidator.ErrorMessage = "This field is required.";
				this.reqValidator.ControlToValidate = this.textBox.ID;

				this.ContainerControl.Controls.Add( this.validator );
				this.ContainerControl.Controls.Add( this.reqValidator );
			}

			private void ValidateDate( object sender, ServerValidateEventArgs args )
			{
				try
				{
					string[] expectedFormats = {"d", "D", "f", "F", "G", "g" };
					DateTime.ParseExact( args.Value, expectedFormats, null, DateTimeStyles.AllowWhiteSpaces );
					args.IsValid = true;
				}
				catch( Exception ex )
				{
					args.IsValid = false;
					this.validator.Attributes["title"] = ex.Message;
				}
			}
		}

		#endregion 

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -