Telerik experts,
Here is my code. I can't update my dynamic RadGrid.
Otherwise no problem to update a normally generated RadGrid.
I must be missing something very basic ...
Here is my code. I can't update my dynamic RadGrid.
Otherwise no problem to update a normally generated RadGrid.
I must be missing something very basic ...
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Northwind2.aspx.cs" Inherits="Northwind2" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head runat="server"> |
<title>Northwind2</title> |
</head> |
<body> |
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="RadScriptManager1" runat="server" /> |
<!-- content start --> |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
<AjaxSettings> |
<telerik:AjaxSetting AjaxControlID="RadGrid2"> |
</telerik:AjaxSetting> |
</AjaxSettings> |
</telerik:RadAjaxManager> |
<div> |
<br /> |
<asp:PlaceHolder ID="PlaceHolder1" runat="server" /> |
<br /> |
<telerik:RadGrid ID="RadGrid2" EnableViewState="true" AllowAutomaticUpdates="True" OnUpdateCommand="grid_UpdateCommand" |
OnNeedDataSource="RadGrid2_NeedDataSource" Width="400px" |
runat="server" AutoGenerateColumns="false" AllowSorting="False" AllowMultiRowSelection="False" GridLines="None"> |
<MasterTableView ItemStyle-Wrap="false" Name="Employees" ShowHeader="true" DataKeyNames="EmployeeID" |
EditMode="InPlace" BorderWidth="0" EnableColumnsViewState="true" Width="400px"> |
<HeaderStyle Wrap="false" Height="20px" Font-Size="X-Small" Font-Bold="true"/> |
<AlternatingItemStyle Height="20px" BackColor="BlanchedAlmond" Wrap="false" BorderWidth="0" Font-Size="X-Small"/> |
<ItemStyle Height="20px" BackColor="Azure" Wrap="false" BorderWidth="0" Font-Size="X-Small"/> |
<EditItemStyle Height="20px" Wrap="false" BorderWidth="0" Font-Size="X-Small"/> |
<Columns> |
<telerik:GridBoundColumn DataField="EmployeeID" HeaderText="EmployeeID" ItemStyle-Height="20px" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="150" HeaderStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="LastName" HeaderText="LastName" ItemStyle-Height="20px" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="150" HeaderStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="FirstName" HeaderText="FirstName" ItemStyle-Height="20px" ItemStyle-Width="150" ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="150" HeaderStyle-HorizontalAlign="Center"></telerik:GridBoundColumn> |
<telerik:GridEditCommandColumn ></telerik:GridEditCommandColumn> |
</Columns> |
</MasterTableView> |
<clientsettings allowexpandcollapse="false"> |
<Scrolling AllowScroll="false" UseStaticHeaders="true"></Scrolling> |
</clientsettings> |
</telerik:RadGrid> |
</div> |
</form> |
</body> |
</html> |
'------------------------------------------------------------- |
'------------------------------------------------------------- |
'------------------------------------------------------------- |
using System; |
using System.Collections; |
using System.Collections.Generic; |
using System.Linq; |
using System.Web; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using System.Web.UI.HtmlControls; |
using System.Data; |
using System.Data.Sql; |
using System.Data.SqlClient; |
using Telerik.Web.UI; |
using System.Reflection; |
public partial class Northwind2 : System.Web.UI.Page |
{ |
//Declare a global DataTable dtTable1 |
DataTable dtTable1 = new DataTable(); |
protected void Page_Load(object sender, EventArgs e) |
{ |
} |
protected void Page_Init(object sender, System.EventArgs e) |
{ |
PopulateGridOnPageInit(); |
} |
protected void PopulateGridOnPageInit() |
{ |
RadGrid grid = new RadGrid(); |
grid.ID = "grid"; |
grid.Width = Unit.Pixel(400); |
grid.AllowSorting = true; |
grid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric; |
grid.AllowPaging = true; |
grid.AllowAutomaticUpdates = false; |
grid.Skin = "Sunset"; |
grid.MasterTableView.AutoGenerateColumns = false; |
grid.MasterTableView.EnableColumnsViewState = false; |
grid.MasterTableView.EditMode = GridEditMode.InPlace; |
grid.MasterTableView.EnableViewState=true ; |
grid.UpdateCommand +=new GridCommandEventHandler(grid_UpdateCommand); |
GridBoundColumn boundColumn; |
boundColumn = new GridBoundColumn(); |
boundColumn.HeaderText = "EmployeeID"; |
boundColumn.DataField = "EmployeeID"; |
//boundColumn.UniqueName = "EmployeeID"; |
grid.MasterTableView.Columns.Add(boundColumn); |
boundColumn = new GridBoundColumn(); |
boundColumn.HeaderText = "LastName"; |
boundColumn.DataField = "LastName"; |
//boundColumn.UniqueName = "LastName"; |
grid.MasterTableView.Columns.Add(boundColumn); |
boundColumn = new GridBoundColumn(); |
boundColumn.HeaderText = "FirstName"; |
boundColumn.DataField = "FirstName"; |
//boundColumn.UniqueName = "FirstName"; |
grid.MasterTableView.Columns.Add(boundColumn); |
GridEditCommandColumn gcEdit = new GridEditCommandColumn(); |
grid.MasterTableView.Columns.Add(gcEdit); |
grid.DataSource = LoadData(); |
grid.DataBind(); |
PlaceHolder1.Controls.Add(grid); |
} |
protected void RadGrid2_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) |
{ |
RadGrid2.DataSource = LoadData(); |
} |
protected void grid_UpdateCommand(object source, Telerik.Web.UI.GridCommandEventArgs e) |
{ |
//Get the GridEditableItem of the RadGrid |
GridEditableItem eeeditedItem = e.Item as GridEditableItem; |
//Get the primary key value using the DataKeyValue. |
string EmployeeID = editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["EmployeeID"].ToString(); |
//Access the textbox from the edit form template and store the values in string variables. |
string LastName = (editedItem["LastName"].Controls[0] as TextBox).Text; |
string FirstName = (editedItem["FirstName"].Controls[0] as TextBox).Text; |
try |
{ |
SqlConnection SqlConnection = new SqlConnection(GetConnectionString()); |
SqlCommand SqlCommand1 = new SqlCommand(); |
//Open the SqlConnection |
SqlConnection.Open(); |
//Update Query to update the Datatable |
string updateQuery = " UPDATE Employees " + |
" SET LastName='" + LastName + "'," + |
" FirstName='" + FirstName + "'" + |
" WHERE EmployeeID=" + EmployeeID ; |
SqlCommand1.CommandText = updateQuery; |
SqlCommand1.Connection = SqlConnection; |
SqlCommand1.ExecuteNonQuery(); |
//Close the SqlConnection |
SqlConnection.Close(); |
} |
catch (Exception ex) |
{ |
RadGrid2.Controls.Add(new LiteralControl("Unable to update Employee. Reason: " + ex.Message)); |
e.Canceled = true; |
} |
finally |
{ |
RadGrid2.EditIndexes.Clear(); |
} |
} |
protected DataTable LoadData() |
{ |
string connectionString = GetConnectionString(); |
SqlConnection SqlConnection = new SqlConnection(connectionString); |
DataTable dtTable = new DataTable(); |
//Declare a global SqlDataAdapter SqlDataAdapter1 |
SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(); |
//Declare a global SqlCommand SqlCommand |
SqlCommand SqlCommand1 = new SqlCommand(); |
//Open the SqlConnection |
SqlConnection.Open(); |
try |
{ |
//Select Query to populate the RadGrid with data from table Employees. |
string selectQuery = "SELECT EmployeeID, LastName, FirstName, Title, ReportsTo from Employees"; |
SqlDataAdapter1.SelectCommand = new SqlCommand(selectQuery, SqlConnection); |
SqlDataAdapter1.Fill(dtTable); |
return dtTable; |
} |
finally |
{ |
//Close the SqlConnection |
SqlConnection.Close(); |
} |
} |
static private string GetConnectionString() |
{ |
return "server=STATION00374;database=Northwind;Integrated Security=SSPI;"; |
} |
} |