📄 defaultcs.aspx.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("'", "'").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 + -