<MasterTableView DataKeyNames="id"> |
<Columns> |
<telerik:GridBoundColumn HeaderText="Street" DataField="Address.Street" /> |
<telerik:GridBoundColumn HeaderText="HouseNumber" DataField="Address.HouseNumber" /> |
<telerik:GridBoundColumn HeaderText="ZipCode" DataField="Address.ZipCode.Code" /> |
<telerik:GridBoundColumn HeaderText="City" DataField="Address.ZipCode.City" /> |
</Columns> |
</MasterTableView> |
// Javascript |
var selectedItem = $find("MyGridClientID").get_masterTableView().get_selectedItems()[0]; |
var selectedItemID = selectedItem.getDataKeyValue("id"); |
using
System;
using
System.Data;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
using
System.Text.RegularExpressions;
public
partial
class
Spreadsheet : System.Web.UI.Page
{
protected
global::System.Web.UI.WebControls.Literal dataRow;
protected
void
Page_Init(
object
sender, System.EventArgs e)
{
DefineGridStructure();
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
RadGrid grid = (RadGrid)PlaceHolder1.FindControl(
"RadGrid1"
);
RadAjaxManager1.AjaxSettings.AddAjaxSetting(grid, grid);
if
(Page.IsPostBack)
{
Label1.Text +=
"Post back!! <br>"
;
}
if
(!Page.IsPostBack)
{
Label1.Text +=
"Page_Load; "
+ DateTime.Now.ToString() +
"<br>"
;
}
}
private
void
DefineGridStructure()
{
RadGrid RadGrid1 =
new
RadGrid();
RadGrid1.ID =
"RadGrid1"
;
System.Drawing.Color disabledBackColor = System.Drawing.Color.AliceBlue;
System.Drawing.Color defaultBorderColor = System.Drawing.Color.Black;
RadGrid1.Width = Unit.Percentage(100);
RadGrid1.PageSize = 7;
RadGrid1.GridLines = GridLines.Both;
RadGrid1.AllowPaging =
true
;
RadGrid1.AllowSorting =
true
;
RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric;
RadGrid1.ShowFooter =
true
;
RadGrid1.AutoGenerateColumns =
false
;
RadGrid1.ShowStatusBar =
true
;
RadGrid1.DataSourceID =
"ObjectDataSource1"
;
RadGrid1.ItemDataBound += RadGrid1_ItemDataBound;
RadGrid1.UpdateCommand += RadGrid1_UpdateCommand;
RadGrid1.MasterTableView.PageSize = 7;
RadGrid1.MasterTableView.Height = Unit.Percentage(100);
RadGrid1.MasterTableView.DataKeyNames =
new
string
[] {
"report_id"
};
RadGrid1.MasterTableView.EditMode = GridEditMode.InPlace;
GridEditCommandColumn editColumn;
editColumn =
new
GridEditCommandColumn();
editColumn.UniqueName =
"EditCommandColumn"
;
editColumn.ItemStyle.BackColor = disabledBackColor;
editColumn.ItemStyle.BorderColor = defaultBorderColor;
editColumn.ItemStyle.BorderWidth = Unit.Pixel(1);
RadGrid1.MasterTableView.Columns.Add(editColumn);
GridColumnGroup headerGroupColumn;
GridBoundColumn boundColumn =
new
GridBoundColumn();
boundColumn.DataField =
"report_id"
;
boundColumn.HeaderText =
"report_id"
;
boundColumn.ItemStyle.BackColor = disabledBackColor;
boundColumn.ItemStyle.BorderColor = defaultBorderColor;
boundColumn.ItemStyle.BorderWidth = Unit.Pixel(1);
boundColumn.ReadOnly =
true
;
RadGrid1.MasterTableView.Columns.Add(boundColumn);
RadGrid1.MasterTableView.AllowMultiColumnSorting =
true
;
RadGrid1.MasterTableView.SortExpressions.Clear();
GridSortExpression expression =
new
GridSortExpression();
expression.FieldName =
"report_id"
;
expression.SortOrder = GridSortOrder.Ascending;
RadGrid1.MasterTableView.SortExpressions.AddSortExpression(expression);
DataTable GroupHeaders = WastewaterGrid.GetGroupHeaders();
DataTable Headers;
foreach
(DataRow groupRow
in
GroupHeaders.Rows)
{
String masterGroupName = groupRow[
"group_name"
].ToString();
String groupColumnHeader = groupRow[
"group_column_header"
].ToString();
Headers = WastewaterGrid.GetHeaders(masterGroupName);
headerGroupColumn =
new
GridColumnGroup();
headerGroupColumn.Name = masterGroupName;
headerGroupColumn.HeaderText = groupColumnHeader;
RadGrid1.MasterTableView.ColumnGroups.Add(headerGroupColumn);
foreach
(DataRow headerRow
in
Headers.Rows)
{
String groupName = headerRow[
"group_name"
].ToString();
String columnName = headerRow[
"column_name"
].ToString();
String columnHeader = headerRow[
"column_header"
].ToString();
String attributeType = headerRow[
"attribute_type"
].ToString();
String dataType = headerRow[
"data_type"
].ToString();
String targetValue = headerRow[
"target_value"
].ToString();
if
(!groupName.Equals(masterGroupName))
{
continue
;
}
boundColumn =
new
GridBoundColumn();
boundColumn.DataField = columnName;
boundColumn.HeaderText = columnHeader;
// where is the uniquename?
boundColumn.ColumnGroupName = masterGroupName;
if
(columnName.Equals(
"MISDnotes"
))
{
boundColumn.ItemStyle.Width = Unit.Percentage(100);
}
if
(!attributeType.Equals(
"ManualEntry"
))
{
boundColumn.ItemStyle.BackColor = disabledBackColor;
boundColumn.ReadOnly =
true
;
}
RadGrid1.MasterTableView.Columns.Add(boundColumn);
}
}
this
.PlaceHolder1.Controls.Add(RadGrid1);
}
public
class
FooterItem
{
private
String _columnName;
private
int
_count;
private
dynamic _min;
private
dynamic _max;
private
dynamic _sum;
public
FooterItem(String str)
{
_columnName = str;
_count = 0;
}
public
String columnName
{
get
{
return
_columnName;
}
set
{
_columnName = value;
}
}
public
int
count
{
get
{
return
_count;
}
set
{
_count = value;
}
}
public
dynamic min
{
get
{
return
_min;
}
set
{
_min = value;
}
}
public
dynamic max
{
get
{
return
_max;
}
set
{
_max = value;
}
}
public
dynamic sum
{
get
{
return
_sum;
}
set
{
_sum = value;
}
}
}
protected
void
RadGrid1_ItemDataBound(
object
sender, GridItemEventArgs e)
{
Int32 userRole = 2;
Int32 today =
int
.Parse(
"20110907"
);
//String today = DateTime.Today.ToString("yyyyMMdd");
String columnName;
String attributeType;
GridTableCell gridCell;
dynamic cellText;
Boolean cellPopped =
false
;
TextBox cellTextBox;
Dictionary<String, FooterItem> FooterAggregates =
new
Dictionary<String, FooterItem>();
FooterItem footerItem;
DataTable Headers = WastewaterGrid.GetHeaders();
foreach
(DataRow row
in
Headers.Rows)
{
columnName = row[
"column_name"
].ToString();
attributeType = row[
"attribute_type"
].ToString();
if
(!attributeType.Contains(
"varchar"
))
{
FooterAggregates.Add(columnName,
new
FooterItem(columnName));
}
}
if
(e.Item
is
GridDataItem)
{
GridDataItem gridRow = (GridDataItem)e.Item;
Int32 ReportID =
int
.Parse(gridRow.GetDataKeyValue(
"report_id"
).ToString());
System.Drawing.Color defaultBorderColor = System.Drawing.Color.Black;
System.Drawing.Color ableBackColor = System.Drawing.Color.White;
System.Drawing.Color disabledBackColor = System.Drawing.Color.AliceBlue;
System.Drawing.Color ableBorderColor = System.Drawing.Color.Lime;
foreach
(DataRow row
in
Headers.Rows)
{
columnName = row[
"column_name"
].ToString();
attributeType = row[
"attribute_type"
].ToString();
gridCell = (GridTableCell)gridRow[columnName];
//cellText = gridCell.Text;
cellText = ((DataRowView)gridRow.DataItem)[columnName];
cellPopped = !String.IsNullOrEmpty((String)cellText);
if
(cellPopped)
{
footerItem = FooterAggregates[columnName];
footerItem.count += 1;
if
(footerItem.min ==
null
)
{
footerItem.min = cellText;
}
else
{
if
(footerItem.min > cellText)
{
footerItem.min = cellText;
}
}
if
(footerItem.max ==
null
)
{
footerItem.max = cellText;
}
else
{
if
(footerItem.max < cellText)
{
footerItem.max = cellText;
}
}
if
(footerItem.sum ==
null
)
{
footerItem.sum = cellText;
}
else
{
footerItem.sum += cellText;
}
}
gridCell.BorderColor = defaultBorderColor;
gridCell.BorderWidth = Unit.Pixel(1);
if
(userRole == 1)
{
if
(attributeType.Equals(
"ManualEntry"
))
{
gridCell.BackColor = ableBackColor;
gridCell.BorderColor = ableBorderColor;
}
}
else
{
if
(attributeType.Equals(
"ManualEntry"
))
{
if
(!ReportID.Equals(today))
{
if
(String.IsNullOrEmpty(cellText))
{
gridCell.BackColor = ableBackColor;
gridCell.BorderColor = ableBorderColor;
}
else
{
gridCell.BackColor = disabledBackColor;
}
}
else
{
gridCell.BackColor = ableBackColor;
gridCell.BorderColor = ableBorderColor;
}
}
if
(e.Item.IsInEditMode && !ReportID.Equals(today) && cellPopped)
{
cellTextBox = (TextBox)gridCell.Controls[0];
cellTextBox.BorderStyle = BorderStyle.None;
cellTextBox.BackColor = disabledBackColor;
cellTextBox.ReadOnly =
true
;
//Label1.Text += "EditMode::ReportID=" + ReportID + "columnName=" + columnName + "::cellText=" + cellText + " <br>";
}
}
}
}
if
(e.Item
is
GridFooterItem)
{
GridFooterItem gridRow = (GridFooterItem)e.Item;
int
count = 0;
dynamic min;
dynamic max;
dynamic sum;
foreach
(DataRow row
in
Headers.Rows)
{
columnName = row[
"column_name"
].ToString();
attributeType = row[
"attribute_type"
].ToString();
gridCell = (GridTableCell)gridRow[columnName];
//cellText = gridCell.Text;
cellText = ((DataRowView)gridRow.DataItem)[columnName];
footerItem = FooterAggregates[columnName];
count += footerItem.count;
}
}
}
private
void
RadGrid1_UpdateCommand(
object
source, GridCommandEventArgs e)
{
Label1.Text +=
" Table to be updated: "
+ e.Item.OwnerTableView.DataMember +
"<br>"
;
GridEditableItem editedItem = e.Item
as
GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
Int32 ReportID =
int
.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex][
"report_id"
].ToString());
String Login =
"David-T420s\\davidk"
;
foreach
(GridColumn column
in
e.Item.OwnerTableView.RenderColumns)
{
if
(column.UniqueName.Equals(
"report_id"
))
{
continue
;
}
if
(column
is
IGridEditableColumn)
{
Boolean isEditable = column.IsEditable;
String editColumnName = column.UniqueName.ToString();
String ResultString;
IGridEditableColumn editableCol = (column
as
IGridEditableColumn);
if
(editableCol.IsEditable)
{
IGridColumnEditor editor = editMan.GetColumnEditor(editableCol);
if
(editor
is
GridTextColumnEditor)
{
String Datum = (editor
as
GridTextColumnEditor).Text.Trim();
DataTable Headers = WastewaterGrid.GetHeaders();
foreach
(DataRow row
in
Headers.Rows)
{
String columnName = row[
"column_name"
].ToString();
String dataType = row[
"data_type"
].ToString();
if
(columnName.Equals(editColumnName))
{
ResultString = ValidateUserInput(dataType, Datum);
if
(!ResultString.Equals(
"valid"
))
{
RadAjaxManager1.Alert(ResultString);
e.Canceled =
true
;
break
;
}
else
{
try
{
WastewaterGrid.UpsertDatum(ReportID, editColumnName, Datum, Login);
}
catch
(Exception ex)
{
Label1.Text +=
"<strong>Unable to set value of column '"
+ column.UniqueName +
"'</strong> <br>"
+ ex.Message;
RadAjaxManager1.Alert(
"Unable to set value of column: "
+ column.UniqueName +
"; "
+ ex.Message);
e.Canceled =
true
;
break
;
}
}
}
}
}
}
}
}
try
{
WastewaterGrid.ReCalculate(ReportID);
}
catch
(Exception ex)
{
RadAjaxManager1.Alert(
"Unable to run ReCalculate: "
+ ex.Message);
e.Canceled =
true
;
}
}
private
String ValidateUserInput(String dataType, String Datum)
{
if
(String.IsNullOrEmpty(Datum))
{
return
"valid"
;
}
Match match;
String ResultString;
String TestString;
Int32 stringLength = Datum.Length;
String IntPattern = @
"^\d+$"
;
RadAjaxManager1.Alert(
"VALIDATEUSERINPUT: dataType=\""
+ dataType +
"\"; Datum=\""
+ Datum +
"\""
);
switch
(dataType)
{
case
"bigint"
:
match = Regex.Match(Datum, IntPattern);
if
(match.Success)
{
try
{
TestString = Int64.Parse(Datum).ToString();
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
else
{
return
"Improper format: Int64"
;
}
break
;
case
"decimal(10,2)"
:
ResultString = ValidateDecimalFormat(dataType, Datum, stringLength, 10, 2);
if
(!ResultString.Equals(
"valid"
))
{
return
ResultString;
}
else
{
try
{
TestString = Decimal.Parse(Datum).ToString();
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
break
;
case
"decimal(10,3)"
:
ResultString = ValidateDecimalFormat(dataType, Datum, stringLength, 10, 3);
if
(!ResultString.Equals(
"valid"
))
{
return
ResultString;
}
else
{
try
{
TestString = Decimal.Parse(Datum).ToString();
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
break
;
case
"decimal(4,1)"
:
ResultString = ValidateDecimalFormat(dataType, Datum, stringLength, 4, 1);
if
(!ResultString.Equals(
"valid"
))
{
return
ResultString;
}
else
{
try
{
TestString = Decimal.Parse(Datum).ToString();
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
break
;
case
"decimal(5,1)"
:
ResultString = ValidateDecimalFormat(dataType, Datum, stringLength, 5, 1);
if
(!ResultString.Equals(
"valid"
))
{
return
ResultString;
}
else
{
try
{
TestString = Decimal.Parse(Datum).ToString();
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
break
;
case
"decimal(6,1)"
:
ResultString = ValidateDecimalFormat(dataType, Datum, stringLength, 6, 1);
if
(!ResultString.Equals(
"valid"
))
{
return
ResultString;
}
else
{
try
{
TestString = Decimal.Parse(Datum).ToString();
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
break
;
case
"int"
:
match = Regex.Match(Datum, IntPattern);
if
(match.Success)
{
try
{
TestString = Int32.Parse(Datum).ToString();
//throw new CustomExceptions.
}
catch
(OverflowException)
{
return
"Overflow Exception: improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
else
{
return
"Improper format: Int32"
;
}
break
;
case
"varchar(25)"
:
if
(stringLength > 25)
{
return
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
break
;
case
"varchar(255)"
:
if
(stringLength > 255)
{
return
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
break
;
default
:
RadAjaxManager1.Alert(
"Unhandled data type"
);
return
"Unhandled data type: \""
+ dataType +
"\""
;
}
return
"valid"
;
}
private
String ValidateDecimalFormat(String dataType, String Datum,
int
stringLength,
int
precision,
int
scale)
{
Match match;
String IntPattern = @
"^\d+$"
;
String ResultString;
Int32 decimalIndex = Datum.IndexOf(
"."
);
if
(decimalIndex > 0)
{
Int32 fractionalLength = stringLength - decimalIndex - 1;
if
(fractionalLength > scale)
{
return
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
Int32 integralLength = stringLength - fractionalLength - 1;
if
(integralLength > (precision - scale))
{
return
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
String integralString = Datum.Substring(0, decimalIndex);
String fractionalString = Datum.Substring(decimalIndex + 1, fractionalLength);
match = Regex.Match(integralString, IntPattern);
if
(match.Success)
{
match = Regex.Match(fractionalString, IntPattern);
if
(match.Success)
{
ResultString =
"valid"
;
}
else
{
ResultString =
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
else
{
ResultString =
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
else
if
(stringLength > (precision - scale))
{
ResultString =
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
else
{
match = Regex.Match(Datum, IntPattern);
if
(match.Success)
{
ResultString =
"valid"
;
}
else
{
ResultString =
"Improper "
+ dataType +
"format in \""
+ Datum +
"\""
;
}
}
return
ResultString;
}
}
I need to add a default value to one of the textboxes when adding a new item in the grid
<telerik:GridTemplateColumn HeaderText="Activity ID" SortExpression="activityID" UniqueName="activityID" >
<ItemTemplate>
<%# Eval("activityID")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtActivity" Text='<%# Bind("activityID") %>' />
<asp:RequiredFieldValidator runat="server" ID="rfvActivity" ControlToValidate="txtActivity" Display="Dynamic" ErrorMessage="*" />
</EditItemTemplate>
</telerik:GridTemplateColumn>
When clicking “Add new recored” I need to pre-populate the txtActivity textbox. How can I access this from the code behind?
I tried this with no success
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.InitInsertCommandName)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
TextBox t = (TextBox)(editedItem.FindControl("txtActivity"));
}
}
And this:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridCommandItem && e.Item.OwnerTableView.IsItemInserted)
{
TextBox txtActivity = (TextBox)e.Item.FindControl("txtActivity");
txtActivity.Text = "300";
}
}
I am running out of ideas.
Please help. Thanks
<
telerik:GridDateTimeColumn
FilterControlWidth
=
"140px"
DataField
=
"Datum"
HeaderText
=
"Datum"
SortExpression
=
"Datum"
UniqueName
=
"Datum"
PickerType
=
"DateTimePicker"
EnableRangeFiltering
=
"true"
CurrentFilterFunction
=
"Between"
ReadOnly
=
"True"
AllowFiltering
=
"True"
FilterListOptions
=
"VaryByDataType"
>
<
HeaderStyle
Width
=
"220px"
/>
</
telerik:GridDateTimeColumn
>
<rad:RadGrid ID=
"GridSummary"
runat=
"server"
OnColumnCreated=
"Grid_ColumnCreated"
OnItemCreated=
"Grid_ItemCreated"
OnItemDataBound=
"Grid_ItemDataBound"
EnableEmbeddedSkins=
"false"
Skin=
"MetroMagenta"
Width=
"900px"
AutoGenerateColumns=
"false"
>
<MasterTableView HierarchyDefaultExpanded=
"true"
HierarchyLoadMode=
"Client"
OnDataBound=
"Grid_DataBound"
DataKeyNames=
"RecordId, ParentRecordId, RecordName"
>
<SelfHierarchySettings ParentKeyName=
"ParentRecordId"
KeyName=
"RecordId"
/>
<Columns>
<rad:GridBoundColumn DataField=
"RecordName"
UniqueName=
"RecordName"
HeaderText=
""
/>
<rad:GridBoundColumn DataField=
"SocialVolume"
UniqueName=
"SocialVolume"
HeaderText=
"Social Volume"
HeaderStyle-Width=
"150px"
ItemStyle-Width=
"150px"
/>
<rad:GridBoundColumn DataField=
"CaseVolume"
UniqueName=
"CaseVolume"
HeaderText=
"Case Volume"
HeaderStyle-Width=
"150px"
ItemStyle-Width=
"150px"
/>
<rad:GridBoundColumn DataField=
"HelpVolume"
UniqueName=
"HelpVolume"
HeaderText=
"Help Volume"
HeaderStyle-Width=
"150px"
ItemStyle-Width=
"150px"
/>
</Columns>
</MasterTableView>
<ClientSettings AllowExpandCollapse=
"true"
/>
</rad:RadGrid>