I have a RadGrid and a RadComboBox outside of RadGrid (say comboOutside), inside a Web Form.
Inside RadGrid, there is 1 more RadComboBox (say comboRadGrid). On selection of items from comboOutside, comboRadGrid is bind i.e., If item 'Company' is selected from comboOutside, then all the company names will be bind in comboRadGrid; and then user select specific company from comboRadGrid and records are added in RadGrid.
For all items, functionality is working fine but I am facing issue in binding of a specific comboOutside item. i.e., When I choose a specific item from comboOutside, say I have 100 items inside comboOutside, and when I select 35th items from it, then comboRadGrid always throw this error while binding records for 35th item (since 35th item has 2000+ records to bind in comboRadGrid)
Error is attached below:
Funcitonality is working fine for all the items except 1 specific item of RadComboBox. I don't understand why. Due to this I am unable to add records in RadGrid
Below is my code-
C# code
public
DataTable GetAccCode(
string
CompanyCode)
{
SqlConnection con =
new
SqlConnection(strcon);
SqlCommand cmd =
new
SqlCommand(
"[Invoice].[usp_tbl_AccountCode_DL_Test]"
, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(
"@CompanyCode"
, CompanyCode);
SqlDataAdapter da =
new
SqlDataAdapter(cmd);
DataTable dt =
new
DataTable();
try
{
con.Open();
da.Fill(dt);
con.Close();
}
catch
(Exception ex)
{
}
return
dt;
}
protected
void
RGGSTAcCode_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
//bind dropdwon while "Add"
string
CompanyCode = ddlCompany.SelectedValue.ToString();
GridEditableItem item = (GridEditableItem)e.Item;
//code to bind inside RadComboBox list
RadComboBox rcb = (RadComboBox)item.FindControl(
"ddlAccountCode"
);
rcb.DataSource = GetAccCode(CompanyCode);
rcb.DataTextField =
"AccountDescription"
;
rcb.DataValueField =
"AccountCodeID"
;
rcb.DataBind();
rcb.Items.Insert(0,
new
RadComboBoxItem(
"- Select -"
,
string
.Empty));
Session[
"AccCode"
] = rcb.SelectedValue.ToString();
string
a = rcb.SelectedValue.ToString();
//Select particular dropdown value while "Edit"
Label lblAcCode2 = item.FindControl(
"lblAcCode2"
)
as
Label;
if
(!
string
.IsNullOrEmpty(lblAcCode2.Text))
{
rcb.SelectedValue = lblAcCode2.Text;
rcb.SelectedItem.Text = lblAcCode2.Text;
}
}
}
//code to bind outside RadComboBox list
protected
void
BindComapnyDL()
{
SqlConnection con =
new
SqlConnection(strcon);
SqlCommand cmd =
new
SqlCommand(
"General.usp_tbl_BuyerCode_Query"
, con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da =
new
SqlDataAdapter(cmd);
DataTable dt =
new
DataTable();
try
{
con.Open();
da.Fill(dt);
con.Close();
}
catch
(Exception ex)
{
}
ddlCompany.DataTextField =
"Title"
;
ddlCompany.DataValueField =
"Code"
;
ddlCompany.DataSource = dt;
ddlCompany.DataBind();
Session[
"Comp"
] = ddlCompany.SelectedValue.ToString();
string
a = ddlCompany.SelectedValue.ToString();
}
//RadComboBox select index changed event
protected
void
ddlCompany_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if
(ddlCompany.SelectedValue ==
null
|| ddlCompany.SelectedValue ==
""
)
{
GridCommandItem cmditem = (GridCommandItem)RGGSTAcCode.MasterTableView.GetItems(GridItemType.CommandItem)[0];
System.Web.UI.WebControls.Button ctrl = (System.Web.UI.WebControls.Button)cmditem.FindControl(
"AddNewRecordButton"
);
ctrl.Enabled =
false
;
System.Web.UI.WebControls.LinkButton btn = (System.Web.UI.WebControls.LinkButton)cmditem.FindControl(
"InitInsertButton"
);
btn.Enabled =
false
;
string
content =
"Please select company first"
;
ScriptManager.RegisterStartupScript(
this
,
typeof
(
string
),
"Successful"
,
"alert('"
+ content +
"');"
,
true
);
}
else
{
RGGSTAcCode.Rebind();
}
}
HTML Code:
<
telerik:RadComboBox
ID
=
"ddlCompany"
runat
=
"server"
Height
=
"200"
Width
=
"240"
DropDownWidth
=
"310"
EmptyMessage
=
"- Select Product -"
HighlightTemplatedItems
=
"true"
CausesValidation
=
"false"
Filter
=
"Contains"
AppendDataBoundItems
=
"true"
AllowCustomText
=
"true"
AutoPostBack
=
"true"
DataTextField
=
"Title"
DataValueField
=
"Code"
OnSelectedIndexChanged
=
"ddlCompany_SelectedIndexChanged"
>
</
telerik:RadComboBox
>
<
telerik:RadGrid
ID
=
"RGGSTAcCode"
runat
=
"server"
ShowFooter
=
"True"
GroupingEnabled
=
"False"
ShowStatusBar
=
"true"
EmptyDataText
=
"No record available."
AllowAutomaticInserts
=
"False"
AllowAutomaticUpdates
=
"False"
AllowAutomaticDeletes
=
"true"
OnNeedDataSource
=
"RGGSTAcCode_NeedDataSource"
OnItemDataBound
=
"RGGSTAcCode_ItemDataBound"
OnInsertCommand
=
"RGGSTAcCode_InsertCommand"
OnDeleteCommand
=
"RGGSTAcCode_DeleteCommand"
OnUpdateCommand
=
"RGGSTAcCode_UpdateCommand"
OnItemCommand
=
"RGGSTAcCode_ItemCommand"
>
<
mastertableview
ShowHeadersWhenNoRecords
=
"true"
autogeneratecolumns
=
"false"
datakeynames
=
"AccountCodeID"
InsertItemDisplay
=
"Top"
insertitempageindexaction
=
"ShowItemOnCurrentPage"
ShowFooter
=
"True"
CommandItemDisplay
=
"Top"
ClientIDMode
=
"Static"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
></
telerik:GridEditCommandColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"AccountCode"
HeaderText
=
"Account Code"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblAcCode"
runat
=
"server"
Text='<%# Eval("AccountCode")%>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:Label
ID
=
"lblAcCode2"
runat
=
"server"
Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>' Visible="false"></
asp:Label
>
<
telerik:RadComboBox
ID
=
"ddlAccountCode"
runat
=
"server"
Height
=
"200"
Width
=
"240"
DropDownWidth
=
"310"
HighlightTemplatedItems
=
"true"
CausesValidation
=
"true"
Filter
=
"Contains"
AppendDataBoundItems
=
"true"
DataTextField
=
"AccountDescription"
DataValueField
=
"AccountCodeID"
>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"AccountDescription"
HeaderText
=
"Description"
UniqueName
=
"AccountDescription"
SortExpression
=
"AccountDescription"
InsertVisiblityMode
=
"AlwaysHidden"
ReadOnly
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
aggregate
=
"SUM"
DataField
=
"Amount"
HeaderText
=
"Amount"
FooterAggregateFormatString
=
"Total : {0:###,##0.00}"
DataFormatString
=
"{0:n}"
FooterStyle-BackColor
=
"#ffc04c"
UniqueName
=
"Amount"
SortExpression
=
"Amount"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Remark"
HeaderText
=
"IFCA Remark"
UniqueName
=
"Remark"
SortExpression
=
"Remark"
>
</
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
ConfirmTextFormatString
=
"Are you sure you want to Delete {0} Account Code?"
ConfirmTextFields
=
"AccountCodeID"
ConfirmDialogType
=
"RadWindow"
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"DeleteColumn"
></
telerik:GridButtonColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
ButtonType
=
"ImageButton"
/>
</
EditFormSettings
>
<
CommandItemSettings
AddNewRecordText
=
"Add new record"
RefreshText
=
"Refresh"
></
CommandItemSettings
>
</
mastertableview
>
</
telerik:RadGrid
>
Please let me know how to resolve. What shall I change in my code.
I have to populate/bind the RadComboBox (comboRadGrid) which is inside of RadGrid, based on the Items that are outside of RadGrid of RadComboBox (comboOutside). Please note that I am very new in Telerik and asp.net Please let me know how to modify my comboRadGrid binding code (based on outside Combo List items) so that this issue do not occur again ? Please reply