This question is locked. New answers and comments are not allowed.
I build dynamic Radgrid with edit form template. First time, i can add new record, when i click add new record second time, the event is not firing but third time event is firing. Kindly help me to solve this problem.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data;
using
AjaxControlToolkit;
using
Telerik.Web.UI;
using
System.Collections.Specialized;
using
System.Collections;
public
partial
class
ViewCase : System.Web.UI.Page
{
SQLHelper sqlhelper =
new
SQLHelper();
static
DataTable dt1 =
new
DataTable();
static
DataTable dt =
new
DataTable();
int
j = 0;
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
Page_Init(
object
sender, EventArgs e)
{
BindAccordion();
}
private
void
BindAccordion()
{
try
{
DataSet ds = sqlhelper.ExecuteDataSet(
"DBP_GetCaseList 1"
);
dt = ds.Tables[0];
dt1 = ds.Tables[1];
Accordion.Panes.Clear();
for
(
int
i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
AccordionPane ap1 =
new
AccordionPane();
Label lbl =
new
Label();
lbl.Text = Convert.ToString(dr[
"strCase"
]);
ap1.ID = lbl.Text;
lbl.ID = lbl.Text;
RadGrid RadGrid1 =
new
RadGrid();
RadGrid1.ID = lbl.Text + i;
RadGrid1.MasterTableView.DataKeyNames =
new
string
[] {
"iid"
};
RadGrid1.Skin =
"Default"
;
RadGrid1.ItemDataBound +=
new
GridItemEventHandler(RadGrid1_ItemDataBound);
RadGrid1.ItemCommand +=
new
GridCommandEventHandler(RadGrid1_ItemCommand);
RadGrid1.NeedDataSource +=
new
GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource);
RadGrid1.Width = Unit.Percentage(100);
RadGrid1.PageSize = 15;
RadGrid1.AllowPaging =
true
;
RadGrid1.AutoGenerateColumns =
false
;
//GridBoundColumn boundColumn;
GridBoundColumn boundColumn =
new
GridBoundColumn();
boundColumn.DataField =
"Sno"
;
boundColumn.HeaderText =
"S.No"
;
RadGrid1.MasterTableView.Columns.Add(boundColumn);
boundColumn =
new
GridBoundColumn();
boundColumn.DataField =
"strHeaderNote"
;
boundColumn.HeaderText =
"Header Note"
;
boundColumn.UniqueName =
"Header"
;
RadGrid1.ClientIDMode = ClientIDMode.Static;
RadGrid1.MasterTableView.Columns.Add(boundColumn);
RadGrid1.MasterTableView.CommandItemSettings.AddNewRecordText =
"Add New Record"
;
RadGrid1.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.TopAndBottom;
RadGrid1.MasterTableView.EditMode = GridEditMode.EditForms;
GridEditCommandColumn editColumn =
new
GridEditCommandColumn();
editColumn.ButtonType = GridButtonColumnType.ImageButton;
editColumn.UniqueName =
"EditColumn"
;
RadGrid1.MasterTableView.Columns.Add(editColumn);
//form setting
RadGrid1.MasterTableView.EditFormSettings.CaptionFormatString =
"Header Note Entry"
;
RadGrid1.MasterTableView.EditFormSettings.EditFormType = GridEditFormType.Template;
RadGrid1.MasterTableView.EditFormSettings.FormTemplate =
new
MyEditFormTemplate();
RadGrid1.Width = Unit.Percentage(100);
RadGrid1.PageSize = 15;
RadGrid1.AllowPaging =
true
;
RadGrid1.AutoGenerateColumns =
false
;
//form setting
RadGrid1.MasterTableView.EditFormSettings.CaptionFormatString =
"Header Note Entry"
;
RadGrid1.MasterTableView.EditFormSettings.EditFormType = GridEditFormType.Template;
ap1.HeaderContainer.Controls.Add(lbl);
ap1.ContentContainer.Controls.Add(RadGrid1);
Accordion.Panes.Add(ap1);
}
}
catch
(Exception ex)
{
throw
;
}
}
public
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
for
(
int
i = j; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
DataView dv =
new
DataView();
dv = dt1.DefaultView;
dv.RowFilter =
"imstrid="
+ dr[
"iid"
];
foreach
(AjaxControlToolkit.AccordionPane accPane
in
Accordion.Panes)
{
RadGrid rg = (RadGrid)accPane.ContentContainer.FindControl(Convert.ToString(dr[
"strCase"
]) + j);
if
(rg !=
null
) { rg.DataSource = dv.ToTable();
break
; }
}
j++;
break
;
}
}
protected
void
RadGrid1_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridEditFormItem && e.Item.IsInEditMode)
{
GridEditFormItem editFormItem = e.Item
as
GridEditFormItem;
GridDataItem parentItem = editFormItem.ParentItem;
Button Submit = editFormItem.FindControl(
"Submit"
)
as
Button;
if
(parentItem !=
null
)
{
TextBox box = editFormItem.FindControl(
"txtHeaderNote"
)
as
TextBox;
box.Text = parentItem[
"Header"
].Text;
Submit.Text =
"Update"
;
Submit.CommandName =
"Update"
;
}
else
{
Submit.Text =
"Insert"
;
Submit.CommandName =
"Insert"
;
}
}
}
public
class
MyEditFormTemplate : IBindableTemplate
{
public
void
InstantiateIn(Control container)
{
GridEditFormItem item = ((GridEditFormItem)(container.NamingContainer));
Table t =
new
Table();
t.Attributes.Add(
"style"
,
"margin:auto;width:500px"
);
TableRow tr =
new
TableRow();
TableCell td =
new
TableCell();
Label lbl =
new
Label();
lbl.Text =
"Header Note"
;
td.VerticalAlign = VerticalAlign.Top;
td.Controls.Add(lbl);
tr.Controls.Add(td);
TextBox tb1 =
new
TextBox();
tb1.ID =
"txtHeaderNote"
;
tb1.TextMode = TextBoxMode.MultiLine;
tb1.Width =
new
Unit(
"400"
);
tb1.Height =
new
Unit(
"100"
);
tb1.Text =
" "
;
// item.ParentItem.OwnerTableView.DataKeyValues[((GridDataItem)(item.ParentItem)).ItemIndex]["strHeaderNote"].ToString();
td =
new
TableCell();
td.Controls.Add(tb1);
tr.Controls.Add(td);
t.Controls.Add(tr);
tr =
new
TableRow();
td =
new
TableCell();
td.VerticalAlign = VerticalAlign.Top;
lbl =
new
Label();
lbl.Text =
" "
;
td.Controls.Add(lbl);
tr.Controls.Add(td);
Button btn1 =
new
Button();
btn1.CommandName =
"Update"
;
btn1.Text =
"Update"
;
btn1.ID =
"Submit"
;
td =
new
TableCell();
td.Controls.Add(btn1);
tr.Controls.Add(td);
t.Controls.Add(tr);
container.Controls.Add(t);
//container.Controls.Add(btn1);
}
public
System.Collections.Specialized.IOrderedDictionary ExtractValues(System.Web.UI.Control container)
{
OrderedDictionary od =
new
OrderedDictionary();
od.Add(
"iid"
, ((TextBox)(((GridEditFormItem)(container)).FindControl(
"txtHeaderNote"
))).Text);
return
od;
}
}
protected
void
RadGrid1_ItemCommand(
object
sender, GridCommandEventArgs e)
{
try
{
//Response.Write(e.CommandName);
if
(e.CommandName ==
"Delete"
)
{
GridDataItem item = e.Item
as
GridDataItem;
string
iid = item.GetDataKeyValue(
"iid"
).ToString();
string
[] paramNames = {
"@indication"
,
"@iid"
,
"istatus"
};
string
[] paramValues = {
"4"
, iid,
"1"
};
sqlhelper.ExecuteQuery(
"DBP_PhysicianSpecialty"
, paramNames, paramValues);
ScriptManager.RegisterStartupScript(
this
, GetType(),
"alert"
,
"alert('Successfully Deleted');"
,
true
);
BindAccordion();
}
else
if
(e.CommandName ==
"Insert"
)
{
GridEditableItem editedItem = e.Item
as
GridEditableItem;
// HiddenField hdnUniqueAuthorID = (editedItem.FindControl("hdnUniqueID") as HiddenField);
TextBox txtHeaderNote = (editedItem.FindControl(
"txtHeaderNote"
)
as
TextBox);
string
[] paramNames = {
"@indication"
,
"@iMstrID"
,
"@strheadernote"
};
string
[] paramValues = {
"2"
,
"1"
, txtHeaderNote.Text };
sqlhelper.ExecuteQuery(
"DBP_GetCaseList"
, paramNames, paramValues);
// ScriptManager.RegisterStartupScript(this, GetType(), "alert", "alert('Successfully Inserted');", true);
BindAccordion();
}
else
if
(e.CommandName ==
"Update"
)
{
/*
GridEditableItem editedItem = e.Item as GridEditableItem;
string[] paramNames = { "@indication", "@iMstrID", "@strheadernote" };
TextBox txtHeaderNote = (editedItem.FindControl("txtHeaderNote") as TextBox);
string[] paramValues = { "2", "1", txtHeaderNote.Text };
sqlhelper.ExecuteQuery("DBP_GetCaseList", paramNames, paramValues);
ScriptManager.RegisterStartupScript(this, GetType(), "alert", "alert('Successfully Updated');", true);
*/
BindAccordion();
}
}
catch
(Exception ex)
{
string
msg = ex.Message.Replace(
"\r\n"
,
""
).Replace(
"'"
,
"`"
);
ScriptManager.RegisterClientScriptBlock(
this
,
this
.GetType(),
"err"
,
"alert('"
+ msg +
"');"
,
true
);
//RadGrid1.Controls.Add(new LiteralControl("Unable to update Reason: " + ex.Message));
}
}
}
.aspx
<ajax:Accordion ID=
"Accordion"
runat=
"server"
SelectedIndex=
"0"
HeaderCssClass=
"accordionHeader"
HeaderSelectedCssClass=
"accordionHeaderSelected"
ContentCssClass=
"accordionContent"
FadeTransitions=
"true"
SuppressHeaderPostbacks=
"true"
TransitionDuration=
"250"
Width=
"100%"
FramesPerSecond=
"40"
RequireOpenedPane=
"false"
AutoSize=
"None"
>
</ajax:Accordion>