Hi Everyone,
I have a problem in editing multiple rows inside detail table. I don't know how to check if row is selected and get the value of edited row.
The hierarchy of my grid is :
<mastertable>
<detail table 2>
<detail table 3>
</detail table 3>
<detail table 2>
</master table>
Requirement:
-detail table 2 allows to edit/delete multiple rows
ASPX:
C# code:
the code is working fine when i select all rows using the header checkbox, but when i select one or two rows only, an error will occur.
Please help.
Thanks!
Lyzel
I have a problem in editing multiple rows inside detail table. I don't know how to check if row is selected and get the value of edited row.
The hierarchy of my grid is :
<mastertable>
<detail table 2>
<detail table 3>
</detail table 3>
<detail table 2>
</master table>
Requirement:
-detail table 2 allows to edit/delete multiple rows
ASPX:
<
DetailTables
>
<
rad:GridTableView
Name
=
"Detail2"
DataKeyNames
=
"cp_id"
DataMember
=
"visit"
CommandItemDisplay
=
"Top"
EditMode
=
"InPlace"
Width
=
"100%"
>
<
CommandItemTemplate
>
<
table
width
=
"100%"
border
=
"0"
cellspacing
=
"0"
cellpadding
=
"0"
>
<
tr
>
<
td
style
=
"width:60%"
>
<
div
style
=
"padding:3px 4px 3px 4px"
>
<
table
border
=
"0"
cellpadding
=
"1"
cellspacing
=
"1"
>
<
tr
style
=
"font: normal 11px tahoma, Verdana, Helvetica, Sans-serif;vertical-align:middle"
>
<
td
>
<
div
class
=
"toolbarIconDivider"
>|</
div
>
</
td
>
<
td
>
<
asp:LinkButton
ID
=
"btnAdd"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"InitInsert"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/addemail.gif"
/> Add</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"lnkPerformInsert"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"PerformInsert"
Visible
=
"false"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/save.gif"
/> Save</
asp:LinkButton
>
</
td
>
<
td
>
<
div
class
=
"toolbarIconDivider"
>|</
div
>
</
td
>
<
td
>
<
asp:LinkButton
ID
=
"btnEditSelected"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"EditSelected"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/edit.gif"
/> Edit</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"btnUpdateEdited"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"Update"
Visible
=
"false"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/save.gif"
/> Save</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"btnCancel"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"CancelAll"
Visible
=
"false"
CausesValidation
=
"false"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/cancel.gif"
/> Cancel</
asp:LinkButton
>
</
td
>
<
td
>
<
div
class
=
"toolbarIconDivider"
>|</
div
>
</
td
>
<
td
>
<
asp:LinkButton
ID
=
"btnDelete"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"Delete"
OnClientClick
=
"javascript:return confirm('Are you sure you want to delete this Clinical Pathway Instruction?')"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/delete.gif"
/> Delete</
asp:LinkButton
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
td
>
</
tr
>
</
table
>
</
CommandItemTemplate
>
<
DetailTables
>
<
rad:GridTableView
Name
=
"Detail3"
DataKeyNames
=
"cpi_id"
DataMember
=
"instruction"
CommandItemDisplay
=
"Top"
EditMode
=
"InPlace"
Width
=
"100%"
>
<
CommandItemTemplate
>
<
table
width
=
"100%"
border
=
"0"
cellspacing
=
"0"
cellpadding
=
"0"
>
<
tr
>
<
td
style
=
"width:60%"
>
<
div
style
=
"padding:3px 4px 3px 4px"
>
<
table
border
=
"0"
cellpadding
=
"1"
cellspacing
=
"1"
>
<
tr
style
=
"font: normal 11px tahoma, Verdana, Helvetica, Sans-serif;vertical-align:middle"
>
<
td
>
<
div
class
=
"toolbarIconDivider"
>|</
div
>
</
td
>
<
td
>
<
asp:LinkButton
ID
=
"btnAdd"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"InitInsert"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/addemail.gif"
/> Add</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"lnkPerformInsert"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"PerformInsert"
Visible
=
"false"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/save.gif"
/> Save</
asp:LinkButton
>
</
td
>
<
td
>
<
div
class
=
"toolbarIconDivider"
>|</
div
>
</
td
>
<
td
>
<
asp:LinkButton
ID
=
"btnEditSelected"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"EditSelected"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/edit.gif"
/> Edit</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"btnUpdateEdited"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"Update"
Visible
=
"false"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/save.gif"
/> Save</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"btnCancel"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"CancelAll"
Visible
=
"false"
CausesValidation
=
"false"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/cancel.gif"
/> Cancel</
asp:LinkButton
>
</
td
>
<
td
>
<
div
class
=
"toolbarIconDivider"
>|</
div
>
</
td
>
<
td
>
<
asp:LinkButton
ID
=
"btnDelete"
CssClass
=
"mu"
onmouseover
=
"this.className='mo'"
onmouseout
=
"this.className='mu'"
runat
=
"server"
CommandName
=
"Delete"
OnClientClick
=
"javascript:return confirm('Are you sure you want to delete this Clinical Pathway Instruction?')"
><
img
style
=
"border:0px"
alt
=
""
src
=
"../images/delete.gif"
/> Delete</
asp:LinkButton
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
td
>
</
tr
>
</
table
>
</
CommandItemTemplate
>
<
Columns
>
<
rad:GridBoundColumn
DataField
=
"cpi_id"
HeaderText
=
"CPI_ID"
UniqueName
=
"CPI_ID"
Visible
=
"false"
></
rad:GridBoundColumn
>
<
rad:GridBoundColumn
DataField
=
"instructions"
HeaderText
=
"instructions"
UniqueName
=
"instructions"
Visible
=
"false"
></
rad:GridBoundColumn
>
<
rad:GridTemplateColumn
HeaderText
=
"Instructions"
UniqueName
=
"instructions"
DataField
=
"instructions"
>
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "instructions")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"tbIns"
runat
=
"server"
Text='<%# Bind( "instructions") %>' width="100%" TabIndex="1" TextMode="MultiLine" Rows="4"></
asp:TextBox
>
<
asp:RequiredFieldValidator
ID
=
"descValidator"
Runat
=
"server"
Display
=
"Dynamic"
ControlToValidate
=
"tbIns"
ErrorMessage
=
"* Required Field"
>
</
asp:RequiredFieldValidator
>
</
EditItemTemplate
>
<
HeaderStyle
Width
=
"90%"
/>
</
rad:GridTemplateColumn
>
<
rad:GridTemplateColumn
HeaderText
=
"Sort Order"
UniqueName
=
"sortorder"
DataField
=
"sortorder"
>
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "sortorder")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"tbSortOrder"
runat
=
"server"
Text='<%# Bind( "sortorder") %>' width="30px" TabIndex="2"></
asp:TextBox
>
<
asp:RequiredFieldValidator
ID
=
"descValidator2"
Runat
=
"server"
Display
=
"Dynamic"
ControlToValidate
=
"tbSortOrder"
ErrorMessage
=
"* Required Field"
>
</
asp:RequiredFieldValidator
>
<
asp:RegularExpressionValidator
ID
=
"RegularExpressionValidator1"
runat
=
"server"
Display
=
"Dynamic"
ControlToValidate
=
"tbSortOrder"
ErrorMessage
=
"Please enter a valid sort order number."
ValidationExpression
=
"^\d+$"
></
asp:RegularExpressionValidator
>
</
EditItemTemplate
>
</
rad:GridTemplateColumn
>
</
Columns
>
</
rad:GridTableView
>
</
DetailTables
>
<
Columns
>
<
rad:GridBoundColumn
DataField
=
"cp_id"
HeaderText
=
"CP_ID"
UniqueName
=
"CP_ID"
Visible
=
"false"
></
rad:GridBoundColumn
>
<
rad:GridBoundColumn
DataField
=
"VisitFrequency"
HeaderText
=
"VisitFrequency"
UniqueName
=
"VisitFrequency"
Visible
=
"false"
></
rad:GridBoundColumn
>
<
rad:GridClientSelectColumn
UniqueName
=
"ClientSelectColumnDetail1"
></
rad:GridClientSelectColumn
>
<
rad:GridTemplateColumn
HeaderText
=
"Visit Frequency"
UniqueName
=
"VisitFrequency"
DataField
=
"VisitFrequency"
>
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "VisitFrequency")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"tbVisit"
runat
=
"server"
Text='<%# Bind( "VisitFrequency") %>' width="100%" TabIndex="1" ></
asp:TextBox
>
<
asp:RequiredFieldValidator
ID
=
"descValidator"
Runat
=
"server"
Display
=
"Dynamic"
ControlToValidate
=
"tbVisit"
ErrorMessage
=
"* Required Field"
>
</
asp:RequiredFieldValidator
>
</
EditItemTemplate
>
<
HeaderStyle
Width
=
"80%"
/>
</
rad:GridTemplateColumn
>
<
rad:GridTemplateColumn
HeaderText
=
"Sort Order"
UniqueName
=
"Sortorder"
DataField
=
"Sortorder"
>
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "Sortorder")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"tbVisitSortOrder"
runat
=
"server"
Text='<%# Bind( "Sortorder") %>' width="30px" TabIndex="2" Visible="false"></
asp:TextBox
>
<
asp:RequiredFieldValidator
ID
=
"descValidator2"
Runat
=
"server"
Display
=
"Dynamic"
ControlToValidate
=
"tbVisitSortOrder"
ErrorMessage
=
"* Required Field"
>
</
asp:RequiredFieldValidator
>
<
asp:RegularExpressionValidator
ID
=
"RegularExpressionValidator2"
runat
=
"server"
Display
=
"Dynamic"
ControlToValidate
=
"tbVisitSortOrder"
ErrorMessage
=
"Please enter a valid sort order number."
ValidationExpression
=
"^\d+$"
></
asp:RegularExpressionValidator
>
</
EditItemTemplate
>
</
rad:GridTemplateColumn
>
</
Columns
>
</
rad:GridTableView
>
</
DetailTables
>
C# code:
protected void gridCPDiag_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.Item.OwnerTableView.Name == "Detail2" and e.Item is GridCommandItem)
if (e.CommandName == "Update")
{
foreach (GridEditableItem editedItem in e.Item.OwnerTableView.Items)
{
int cpid = Convert.ToInt32(editedItem.SavedOldValues["cp_id"]);
TextBox txtVisitFreq = (TextBox)editedItem.FindControl("tbVisit");
TextBox txtVisitSortOrder = (TextBox)editedItem.FindControl("tbVisitSortOrder");
UpdateVisitFreq(cpid, txtVisitFreq.Text, Convert.ToInt32(txtVisitSortOrder.Text));
editedItem.Edit = false;
}
}
}
}
the code is working fine when i select all rows using the header checkbox, but when i select one or two rows only, an error will occur.
Please help.
Thanks!
Lyzel