or
<add path="Telerik.ReportViewer.axd" verb="*" type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms" validate="true"/>
<add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" validate="false"/>
<
telerik:RadGrid
ID
=
"myradGrid"
runat
=
"server"
Skin
=
"Web20"
CssClass
=
"CentGrid50"
Visible
=
"false"
>
<
MasterTableView
AutoGenerateColumns
=
"true"
ShowHeadersWhenNoRecords
=
"true"
CommandItemDisplay
=
"Top"
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
table
>
<
tr
>
<
td
>
<
telerik:RadDatePicker
ID
=
"dtbegin"
runat
=
"server"
Width
=
"100px"
></
telerik:RadDatePicker
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadTimePicker
ID
=
"dtTimeBegin"
runat
=
"server"
Width
=
"100px"
>
<
TimeView
runat
=
"server"
Interval
=
"00:30:00"
></
TimeView
>
</
telerik:RadTimePicker
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadTimePicker
ID
=
"RadTimePicker1"
runat
=
"server"
Width
=
"100px"
>
<
TimeView
runat
=
"server"
Interval
=
"00:30:00"
></
TimeView
>
</
telerik:RadTimePicker
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:LinkButton
ID
=
"lnkSubmit"
runat
=
"server"
text='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "Insert", "Update") %>'
CommandName='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "PerformInsert", "Update")%>'></
asp:LinkButton
>
<
asp:LinkButton
ID
=
"lnkCancel"
runat
=
"server"
CausesValidation
=
"false"
CommandName
=
"Cancel"
Text
=
"Cancel"
></
asp:LinkButton
>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
</
telerik:RadGrid
>
Protected Sub myradGrid_NeedDataSource(sender As Object, e As GridNeedDataSourceEventArgs) Handles myradGrid.NeedDataSource
Dim dt As New DataTable
dt.Columns.Add("Date Begin")
dt.Columns.Add("Time Begin")
dt.Columns.Add("Time End")
If Session("Table") IsNot Nothing Then
dt = DirectCast(Session("Table"), DataTable)
End If
myradGrid.DataSource = dt
'populate RadGrid with datatable
Session("Table") = dt
End Sub
Heres my code to try to get at the insert into the datatable but it will not allow me to get at the raddate or time pickers, says cannot be converted from table cell.
Protected Sub myradGrid_ItemCommand(sender As Object, e As GridCommandEventArgs) Handles myradGrid.ItemCommand
If (e.CommandName = RadGrid.PerformInsertCommandName) Then
Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem)
Dim dtbegin As RadDatePicker = DirectCast(editedItem("dtbegin"), RadDatePicker)
Dim dt As DataTable
dt = DirectCast(Session("Table"), DataTable)
Dim drValues As DataRow = dt.NewRow()
drValues("Date Begin") = dtbegin.Text
drValues("Time Begin") = timeBegin.Text
drValues("Time End") = timeEnd.Text
dt.Rows.Add(drValues)
'adding new row into datatable
dt.AcceptChanges()
Session("Table") = dt
myradGrid.Rebind()
End If
End Sub
<
asp:LinkButton
ID
=
"btnAddInvoice"
runat
=
"server"
CssClass
=
"button small radius"
Text
=
"Add Checked to New Invoice"
OnClick
=
"btnAddInvoice_Click"
></
asp:LinkButton
>
<
asp:Literal
runat
=
"server"
ID
=
"litAddInvoice"
></
asp:Literal
>
<
div
class
=
"reset"
>
<
telerik:RadGrid
ID
=
"rgTracker"
runat
=
"server"
AllowSorting
=
"true"
AllowPaging
=
"true"
PageSize
=
"100"
OnItemCreated
=
"rgTracker_ItemCreated"
OnNeedDataSource
=
"rgTracker_NeedDataSource"
AllowFilteringByColumn
=
"True"
OnItemCommand
=
"rgTracker_ItemCommand"
OnItemDataBound
=
"rgTracker_ItemDataBound"
Skin
=
"Windows7"
OnPreRender
=
"rgTracker_PreRender"
>
<
ExportSettings
HideStructureColumns
=
"true"
>
</
ExportSettings
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
MasterTableView
AutoGenerateColumns
=
"false"
EnableHierarchyExpandAll
=
"true"
DataKeyNames
=
"rdID, jobID"
>
<
PagerStyle
PageSizes
=
"10,50,100,200,500"
Mode
=
"NextPrevAndNumeric"
PageSizeLabelText
=
"Show results: "
Position
=
"TopAndBottom"
AlwaysVisible
=
"true"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"rdID"
Visible
=
"false"
ReadOnly
=
"true"
UniqueName
=
"rdID"
ForceExtractValue
=
"Always"
ConvertEmptyStringToNull
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"jobID"
Visible
=
"false"
ReadOnly
=
"true"
UniqueName
=
"jobID"
ForceExtractValue
=
"Always"
ConvertEmptyStringToNull
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridHyperLinkColumn
HeaderText
=
"Customer Name"
DataTextField
=
"customerName"
UniqueName
=
"customerName"
DataNavigateUrlFields
=
"jobID"
DataNavigateUrlFormatString
=
"/pensionlitedetail/{0}"
>
<
HeaderStyle
Width
=
"150px"
/>
</
telerik:GridHyperLinkColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Postcode"
DataField
=
"customerPostcode"
UniqueName
=
"customerPostcode"
FilterControlWidth
=
"30px"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"50px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Phone"
DataField
=
"customerPhone"
UniqueName
=
"customerPhone"
FilterControlWidth
=
"70px"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"90px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Pension Value"
DataField
=
"customerPensionValue"
UniqueName
=
"customerPensionValue"
DataFormatString
=
"{0:C}"
FilterControlWidth
=
"40px"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"75px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
HeaderText
=
"Sale Date"
DataField
=
"saleDate"
UniqueName
=
"saleDate"
DataFormatString
=
"{0:g}"
PickerType
=
"DatePicker"
EnableRangeFiltering
=
"true"
FilterControlWidth
=
"100px"
EnableTimeIndependentFiltering
=
"true"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"120px"
/>
</
telerik:GridDateTimeColumn
>
<
telerik:GridDateTimeColumn
HeaderText
=
"Appt Date"
DataField
=
"apptDate"
UniqueName
=
"apptDate"
DataFormatString
=
"{0:g}"
PickerType
=
"DatePicker"
EnableRangeFiltering
=
"true"
FilterControlWidth
=
"100px"
EnableTimeIndependentFiltering
=
"true"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"120px"
/></
telerik:GridDateTimeColumn
>
<
telerik:GridDateTimeColumn
HeaderText
=
"Updated"
DataField
=
"updatedDate"
UniqueName
=
"updatedDate"
DataFormatString
=
"{0:g}"
PickerType
=
"DatePicker"
EnableRangeFiltering
=
"true"
FilterControlWidth
=
"100px"
EnableTimeIndependentFiltering
=
"true"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"120px"
/></
telerik:GridDateTimeColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Current Status"
DataField
=
"currentStatus"
UniqueName
=
"currentStatus"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"100px"
/>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBoxStatus"
AppendDataBoundItems
=
"true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("currentStatus").CurrentFilterValue %>'
runat="server" OnClientSelectedIndexChanged="StatusIndexChanged" Skin="Windows7" Width="200px">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
<
telerik:RadComboBoxItem
Text
=
"Lead Pending"
Value
=
"Lead Pending"
/>
<
telerik:RadComboBoxItem
Text
=
"Lead Accepted"
Value
=
"Lead Accepted"
/>
<
telerik:RadComboBoxItem
Text
=
"Lead Rejected"
Value
=
"Lead Rejected"
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function StatusIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("currentStatus", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Invoiced"
DataField
=
"invoiced"
UniqueName
=
"invoiced"
Display
=
"false"
ForceExtractValue
=
"Always"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"50px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"InvoicedCheckboxColumn"
AllowFiltering
=
"false"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"chkInvoiced"
runat
=
"server"
/>
</
ItemTemplate
>
<
HeaderTemplate
>
Invoiced<
br
/><
asp:CheckBox
ID
=
"chkInoicedHeader"
runat
=
"server"
OnCheckedChanged
=
"chkInoicedHeader_CheckedChanged"
AutoPostBack
=
"true"
/>
</
HeaderTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Credit"
DataField
=
"credited"
UniqueName
=
"credited"
Display
=
"false"
ForceExtractValue
=
"Always"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"50px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"CreditedCheckboxColumn"
AllowFiltering
=
"false"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"chkCredited"
runat
=
"server"
/>
</
ItemTemplate
>
<
HeaderTemplate
>
Credited<
br
/><
asp:CheckBox
ID
=
"chkCreditedHeader"
runat
=
"server"
OnCheckedChanged
=
"chkCreditedHeader_CheckedChanged"
AutoPostBack
=
"true"
/>
</
HeaderTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
protected
void
rgTracker_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
rgTracker.DataSource = GetData();
}
protected
void
rgTracker_ItemCommand(
object
sender, Telerik.Web.UI.GridCommandEventArgs e)
{
}
protected
void
rgTracker_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string
cStatus = dataItem[
"currentStatus"
].Text;
if
(cStatus ==
"Lead Rejected"
)
{
dataItem.BackColor = Color.LightCoral;
}
if
(cStatus ==
"Lead Accepted"
)
{
dataItem.BackColor = Color.LightGreen;
}
CheckBox chkInvoiced = (CheckBox)e.Item.FindControl(
"chkInvoiced"
);
string
sInv = dataItem[
"invoiced"
].Text;
bool
bInv =
false
;
Boolean.TryParse(sInv,
out
bInv);
if
(bInv)
{
chkInvoiced.Checked =
true
;
chkInvoiced.Enabled =
false
;
}
CheckBox chkCredited = (CheckBox)e.Item.FindControl(
"chkCredited"
);
string
sCred = dataItem[
"credited"
].Text;
bool
bCred =
false
;
Boolean.TryParse(sCred,
out
bCred);
if
(bCred)
{
chkCredited.Checked =
true
;
chkCredited.Enabled =
false
;
}
}
}
protected
void
rgTracker_PreRender(
object
sender, EventArgs e)
{
}
protected
void
rgTracker_ItemCreated(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
GridFilteringItem filteringItem = e.Item
as
GridFilteringItem;
if
(filteringItem !=
null
)
{
LiteralControl literalTo1 = filteringItem[
"saleDate"
].Controls[3]
as
LiteralControl;
literalTo1.Text =
"<br />To:"
;
LiteralControl literalTo2 = filteringItem[
"apptDate"
].Controls[3]
as
LiteralControl;
literalTo2.Text =
"<br />To:"
;
LiteralControl literalTo3 = filteringItem[
"updatedDate"
].Controls[3]
as
LiteralControl;
literalTo3.Text =
"<br />To:"
;
}
}
protected
void
chkInoicedHeader_CheckedChanged(
object
sender, EventArgs e)
{
CheckBox headerCheckBox = (sender
as
CheckBox);
foreach
(GridDataItem dataItem
in
rgTracker.MasterTableView.Items)
{
if
((dataItem.FindControl(
"chkInvoiced"
)
as
CheckBox).Enabled)
{
(dataItem.FindControl(
"chkInvoiced"
)
as
CheckBox).Checked = headerCheckBox.Checked;
dataItem.Selected = headerCheckBox.Checked;
}
}
}
protected
void
chkCreditedHeader_CheckedChanged(
object
sender, EventArgs e)
{
CheckBox headerCheckBox = (sender
as
CheckBox);
foreach
(GridDataItem dataItem
in
rgTracker.MasterTableView.Items)
{
if
((dataItem.FindControl(
"chkCredited"
)
as
CheckBox).Enabled)
{
(dataItem.FindControl(
"chkCredited"
)
as
CheckBox).Checked = headerCheckBox.Checked;
dataItem.Selected = headerCheckBox.Checked;
}
}
}
protected
void
btnAddInvoice_Click(
object
sender, EventArgs e)
{
//TODO: Wire in credits and check for duplicate sales
Invoice inv =
new
Invoice();
inv.ClientID = 11;
inv.InvoiceDate = DateTime.Now;
dbContext.Invoices.Add(inv);
dbContext.SaveChanges();
foreach
(GridDataItem item
in
rgTracker.MasterTableView.Items)
{
CheckBox chkInvoiced = (CheckBox)item.FindControl(
"chkInvoiced"
);
if
(chkInvoiced.Checked && chkInvoiced.Enabled)
{
//ReportDetails rd = (ReportDetails)item.DataItem;
//litAddInvoice.Text += string.Format("<div data-alert class='alert-box info radius'>{0} {1} - {2}</div>", rd.customerName, rd.customerPhone, rd.jobId);
string
strJID = item.GetDataKeyValue(
"jobID"
).ToString();
litAddInvoice.Text +=
string
.Format(
"<div data-alert class='alert-box info radius'>Job ID: {0}</div>"
, strJID);
int
intJID = 0;
Int32.TryParse(strJID,
out
intJID);
Job j =
new
Job();
j = dbContext.Jobs.Where(x => x.ID == intJID).FirstOrDefault();
if
(j.ID > 0)
{
InvoiceDetail id =
new
InvoiceDetail();
id.JobID = j.ID;
id.Credit =
false
;
id.JobSchemaID = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.ID).FirstOrDefault();
id.StatusWhenInvoiced = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.JobStage1.JobStage1).FirstOrDefault();
id.InvoiceID = inv.ID;
dbContext.InvoiceDetails.Add(id);
dbContext.SaveChanges();
}
}
CheckBox chkCredited = (CheckBox)item.FindControl(
"chkCredited"
);
if
(chkCredited.Checked && chkCredited.Enabled)
{
//ReportDetails rd = (ReportDetails)item.DataItem;
//litAddInvoice.Text += string.Format("<div data-alert class='alert-box info radius'>{0} {1} - {2}</div>", rd.customerName, rd.customerPhone, rd.jobId);
string
strJID = item.GetDataKeyValue(
"jobID"
).ToString();
litAddInvoice.Text +=
string
.Format(
"<div data-alert class='alert-box warning radius'>Job ID: {0}</div>"
, strJID);
int
intJID = 0;
Int32.TryParse(strJID,
out
intJID);
Job j =
new
Job();
j = dbContext.Jobs.Where(x => x.ID == intJID).FirstOrDefault();
if
(j.ID > 0)
{
InvoiceDetail id =
new
InvoiceDetail();
id.JobID = j.ID;
id.Credit =
true
;
id.JobSchemaID = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.ID).FirstOrDefault();
id.StatusWhenInvoiced = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.JobStage1.JobStage1).FirstOrDefault();
id.InvoiceID = inv.ID;
dbContext.InvoiceDetails.Add(id);
dbContext.SaveChanges();
}
}
rgTracker.Rebind();
}
litAddInvoice.Text +=
"<div data-alert class='alert-box success radius'>Invoice Generated</div>"
;
}
GridColumnCollection cols = grid.MasterTableView.Columns;
GridColumn c = cols.FindByUniqueName(columnName);
if
(c !=
null
){
int
start = c.OrderIndex;
for
(
int
i= start; i < cols.Count; i++)
{
c = cols[i];
if
(i < cols.Count - 1)
c.OrderIndex = i+1;
else
c.OrderIndex = start;
}
}