Hi,
I have used RadComboBox inside my DetailsView. I send the value of combobox as comma separated to the database as (1,2,3,4). When I want to retrieve the data (1,2,3,4) from the database on edit mode of DetailsView, how can I set or bind the "Checked" values and display them as checked back in the combobox.
Here is what i have done:
WebForm1.Aspx
WebForm1.Aspx.CS
Now how can I get the comma separated values and bound them with the combobox so that it should check only those items.
I have used RadComboBox inside my DetailsView. I send the value of combobox as comma separated to the database as (1,2,3,4). When I want to retrieve the data (1,2,3,4) from the database on edit mode of DetailsView, how can I set or bind the "Checked" values and display them as checked back in the combobox.
Here is what i have done:
WebForm1.Aspx
<%----------------------- DATA SOURCE FOR DELIVERABLE -------------------------%>
<
asp:SqlDataSource
ID
=
"SqlDataSource2"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ITSConnectionString %>"
DeleteCommand="DELETE FROM [Deliverable] WHERE [DeliverableId] = @DeliverableId"
InsertCommand="INSERT INTO [Deliverable] ([DeliverableTitle],[CCIds]) VALUES (@DeliverableTitle, @CCIds)"
SelectCommand="SELECT * FROM [Deliverable] WHERE ([DeliverableId] = @DeliverableId)"
UpdateCommand="UPDATE [Deliverable] SET [DeliverableTitle] = @DeliverableTitle, [CCIds] = @CCIds WHERE [DeliverableId] = @DeliverableId">
<
DeleteParameters
>
<
asp:Parameter
Name
=
"DeliverableId"
Type
=
"Int32"
/>
</
DeleteParameters
>
<
InsertParameters
>
<
asp:Parameter
Name
=
"DeliverableId"
Type
=
"int32"
/>
<
asp:Parameter
Name
=
"DeliverableTitle"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"CCIds"
Type
=
"String"
/>
</
InsertParameters
>
<
UpdateParameters
>
<
asp:Parameter
Name
=
"DeliverableId"
Type
=
"int32"
/>
<
asp:Parameter
Name
=
"DeliverableTitle"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"CCIds"
Type
=
"String"
/>
</
UpdateParameters
>
<
SelectParameters
>
<
asp:QueryStringParameter
Name
=
"DeliverableId"
QueryStringField
=
"DeliverableId"
Type
=
"Int32"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
<%----------------------- DATA SOURCE FOR COMBOBOX -------------------------%>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ITSConnectionString %>" SelectCommand="SELECT [UserId], [DisplayName] FROM [Users]"></
asp:SqlDataSource
>
<%----------------------- THE DETAILS VIEW -------------------------%>
<
asp:DetailsView
ID
=
"DetailsView1"
runat
=
"server"
DefaultMode
=
"Insert"
AutoGenerateRows
=
"False"
DataKeyNames
=
"DeliverableId"
DataSourceID
=
"SqlDataSource2"
Height
=
"50px"
Width
=
"125px"
OnItemInserting
=
"DetailsView1_ItemInserting"
OnDataBinding
=
"DetailsView1_DataBinding"
OnDataBound
=
"DetailsView1_DataBound"
>
<
Fields
>
<
asp:BoundField
DataField
=
"DeliverableId"
HeaderText
=
"DeliverableId"
InsertVisible
=
"False"
ReadOnly
=
"True"
SortExpression
=
"DeliverableId"
/>
<
asp:BoundField
DataField
=
"DeliverableId"
HeaderText
=
"DeliverableId"
SortExpression
=
"DeliverableId"
/>
<
asp:BoundField
DataField
=
"DeliverableTitle"
HeaderText
=
"DeliverableTitle"
SortExpression
=
"DeliverableTitle"
/>
<
asp:TemplateField
>
<
ItemTemplate
>
<
telerik:RadComboBox
ID
=
"CCIds"
Text='<% #Bind("CCIds") %>' runat="server"
DataSourceID="SqlDataSource1" DataTextField="DisplayName" DataValueField="UserId"
CheckBoxes="true"></
telerik:RadComboBox
>
</
ItemTemplate
>
</
asp:TemplateField
>
<
asp:CommandField
ShowEditButton
=
"True"
/>
<
asp:ButtonField
Text
=
"Insert"
CommandName
=
"Insert"
/>
<
asp:ButtonField
Text
=
"Update"
CommandName
=
"Update"
/>
</
Fields
>
</
asp:DetailsView
>
WebForm1.Aspx.CS
public
string
GetCheckBoxValues(
string
RadComboBoxName)
{
RadComboBox rcb = (RadComboBox)DetailsView1.FindControl(RadComboBoxName);
var collection = rcb.CheckedItems;
StringBuilder sbValues =
new
StringBuilder();
if
(collection.Count != 0)
{
foreach
(var item
in
collection)
{
sbValues.Append(item.Value);
sbValues.Append(Delimiter);
}
if
(sbValues.ToString().EndsWith(Delimiter))
sbValues.Remove(sbValues.Length - 1, 1);
}
return
sbValues.ToString();
}
// Get the comma separate values and insert them into the DB.
protected
void
DetailsView1_ItemInserting(
object
sender, DetailsViewInsertEventArgs e)
{
string
CCIds = GetCheckBoxValues(
"CCIds"
);
if
(CCIds !=
null
)
{
e.Values[
"CCIds"
] = CCIds;
}
}
Now how can I get the comma separated values and bound them with the combobox so that it should check only those items.