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

📄 defaultcs.aspx.cs

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

namespace Telerik.GridExamplesCSharp.AJAX.EditOnDblClick
{
	public abstract class DefaultCS : XhtmlPage
	{
		#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.RadGrid1.NeedDataSource += new Telerik.WebControls.GridNeedDataSourceEventHandler(this.RadGrid1_NeedDataSource);
			this.RadGrid1.ColumnCreated += new Telerik.WebControls.GridColumnCreatedEventHandler(this.RadGrid1_ColumnCreated);
			this.Load += new EventHandler(this.Page_Load);
		}
		#endregion

		protected System.Web.UI.WebControls.Label Label1;
		protected Telerik.WebControls.RadGrid RadGrid1;

		protected void Page_Load(object sender, System.EventArgs e)
		{
			string clientExecute = string.Format("document.getElementById('{0}').innerHTML = '';", this.Label1.ClientID);
			this.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute;
		}

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

		private DataTable OrderDetails 
		{
			get
			{
				if (this.Session["OrderDetails"] != null)
				{
					return (DataTable)this.Session["OrderDetails"];
				}

				DataTable res = DataSourceHelperCS.GetDataTable("SELECT * FROM [Order Details]");
				this.Session["OrderDetails"] = res;
				return res;
			}			
		}

		protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
		{
			base.RaisePostBackEvent(sourceControl, eventArgument);
			if (sourceControl is RadGrid)
			{
				string[] postBackEventArgumentData = eventArgument.Split(':'); 
				switch (postBackEventArgumentData[0]) 
				{ 
					case "Edit":
					{
						((RadGrid1.MasterTableView.Controls[0] as Table).Rows[int.Parse(postBackEventArgumentData[1])] as GridItem).Edit = true;
						RadGrid1.Rebind();
						break;
					} 
					case "Update":
					{
						GridItem item = ((RadGrid1.MasterTableView.Controls[0] as Table).Rows[int.Parse(postBackEventArgumentData[1])] as GridItem);
						UpdateItem(item);
						RadGrid1.Rebind();
						break;
					} 				
				}
			}
		}

		private void RadGrid1_ColumnCreated(object sender, Telerik.WebControls.GridColumnCreatedEventArgs e)
		{
			if (e.Column is GridBoundColumn)
			{
				if ((e.Column as GridBoundColumn).DataField == "OrderID" || (e.Column as GridBoundColumn).DataField == "ProductID")
				{
					(e.Column as GridBoundColumn).ReadOnly = true;
					e.Column.HeaderStyle.Width = Unit.Pixel(60);
				}
				else
				{
					e.Column.HeaderStyle.Width = Unit.Pixel(150);
				}
			}
		}

		private void UpdateItem(GridItem item)
		{
			GridEditableItem editedItem = item as GridEditableItem;
			DataTable ordersTable = this.OrderDetails;

			//Locate the changed row in the DataSource
			DataRow[] changedRows = ordersTable.Select( "OrderID = " + editedItem["OrderID"].Text + " AND " + " ProductID = " + editedItem["ProductID"].Text );
			
			string labelID = this.Label1.ClientID;
			string clientExecute = string.Format("document.getElementById('{0}').innerHTML = '{1}';", labelID, "");

			if (changedRows.Length != 1)
			{
				clientExecute = string.Format("document.getElementById('{0}').innerHTML = '{1}';",
					labelID, "Unbale to locate the Order for updating.");

				this.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute;
				return;
			}

			//Update new values
			Hashtable newValues = new Hashtable();
			//The GridTableView will fill the values from all editable columns in the hash
			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();
				//In AJAX mode this will update the corresponding label text, client-side:
				clientExecute = string.Format("document.getElementById('{0}').innerHTML = '{1}';",
					labelID, Server.HtmlEncode("Unable to update Orders. Reason: " + ex.Message).Replace("'", "&#39;").Replace("\r\n", "<br />"));

				this.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute;
				return;
			}

			//Code for updating the database can go here...
			clientExecute = string.Format("document.getElementById('{0}').innerHTML = '{1}';",
				labelID, "Order " + changedRow["OrderID"] + ", ProductID " + changedRow["ProductID"] + " updated");

			this.RadGrid1.ClientSettings.ClientEvents.OnGridCreated = clientExecute;
		}

	}

}

⌨️ 快捷键说明

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