Hello
I have a Radgrid in a webform that contain only one combobox in each row. That combo box contain city. It is used to calculate how many kilometers it has between each city. (Like google). I am able to add line dynamicly and remove line too. When I remove line, it's always the last row that I'm taking off. And after, I rebind my datagrid. The thing is, all my combobox before lose there value the user selected. It put back the default value.
How can I keep the values the user selected in others combobox?
Here is my code:
Thank you
Myriam
I have a Radgrid in a webform that contain only one combobox in each row. That combo box contain city. It is used to calculate how many kilometers it has between each city. (Like google). I am able to add line dynamicly and remove line too. When I remove line, it's always the last row that I'm taking off. And after, I rebind my datagrid. The thing is, all my combobox before lose there value the user selected. It put back the default value.
How can I keep the values the user selected in others combobox?
Here is my code:
<
telerik:RadGrid
ID
=
"RadGrid2"
Skin
=
"Vista"
runat
=
"server"
ShowFooter
=
"true"
CommandItemStyle-HorizontalAlign
=
"Center"
Width
=
"200px"
>
<
MasterTableView
ShowFooter
=
"true"
CommandItemDisplay
=
"bottom"
EditMode
=
"InPlace"
>
<
CommandItemTemplate
>
<
asp:LinkButton
ID
=
"LinkButton1"
Visible
=
"false"
CommandName
=
"CalculDistance"
Runat
=
"server"
CssClass
=
"TexteBlanc16"
>Calculer</
asp:LinkButton
>
</
CommandItemTemplate
>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"CodePostal"
HeaderText
=
"Destinations"
>
<
ItemTemplate
>
<
asp:DropDownList
ID
=
"LstCodePostal"
runat
=
"server"
></
asp:DropDownList
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
asp:Panel
ID
=
"Panel1"
runat
=
"server"
>
<
asp:LinkButton
ID
=
"LKBtnAjouterDestination"
runat
=
"server"
>Ajouter une destination</
asp:LinkButton
>
<
asp:LinkButton
ID
=
"LKBtnEnleverDestination"
runat
=
"server"
>Enlever une destination</
asp:LinkButton
>
</
asp:Panel
>
Public
dt
As
DataTable
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
If
Not
IsPostBack =
True
Then
dt =
New
DataTable()
dt.Columns.Add(
New
DataColumn(
"RowNumber"
,
GetType
(
String
)))
AjouterLigne(dt)
End
If
Private
Sub
LKBtnAjouterDestination_Click(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
LKBtnAjouterDestination.Click
Dim
countitem
As
Integer
Dim
dt
As
DataTable =
DirectCast
(ViewState(
"dt"
), DataTable)
countitem = RadGrid2.Items.Count
Dim
cpt
As
Integer
= 0
For
Each
Item
As
GridDataItem
In
RadGrid2.Items
Dim
Lstcode
As
DropDownList =
DirectCast
(Item(
"CodePostal"
).FindControl(
"LstCodePostal"
), DropDownList)
If
Not
(Lstcode.Text
Is
Nothing
)
And
Lstcode.Text <>
""
Then
liste.Add(Lstcode.Text)
End
If
Next
ViewState(
"dt"
) = AjouterLigne(dt)
listcount = liste.Count
RadGrid2.Rebind()
While
cpt < listcount
Dim
Lstcode
As
DropDownList =
DirectCast
(RadGrid2.Items(cpt)(
"CodePostal"
).FindControl(
"LstCodePostal"
), DropDownList)
Lstcode.Text = liste.Item(cpt)
cpt = cpt + 1
End
While
End
Sub
Private
Sub
LKBtnEnleverDestination_Click(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
LKBtnEnleverDestination.Click
Dim
countitem
As
Integer
Dim
dt
As
DataTable =
DirectCast
(ViewState(
"dt"
), DataTable)
countitem = RadGrid2.Items.Count
ViewState(
"dt"
) = EnleverLigne(dt, countitem)
listcount = liste.Count
RadGrid2.Rebind()
End
Sub
Public
Function
AjouterLigne(
ByVal
dt
As
DataTable)
As
DataTable
' method to create row
Dim
dr
As
DataRow = dt.NewRow()
dr(
"RowNumber"
) =
""
dt.Rows.Add(dr)
Return
dt
End
Function
Public
Function
EnleverLigne(
ByVal
dt
As
DataTable,
ByVal
IndexDernier
As
Integer
)
As
DataTable
' method to delete row
If
IndexDernier > 0
Then
dt.Rows(IndexDernier - 1).Delete()
End
If
Return
dt
End
Function
Private
Sub
RadGrid2_ColumnCreated(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridColumnCreatedEventArgs)
Handles
RadGrid2.ColumnCreated
If
(e.Column.UniqueName =
"RowNumber"
)
Then
e.Column.Visible =
False
End
If
End
Sub
Private
Sub
RadGrid2_ItemDataBound(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridItemEventArgs)
Handles
RadGrid2.ItemDataBound
Dim
cpt
As
Integer
= 0
Do
While
cpt < RadGrid2.Items.Count
'Dim Lstcode As DropDownList = DirectCast(Item("CodePostal").FindControl("LstCodePostal"), DropDownList)
Dim
Lstcode
As
DropDownList =
DirectCast
(RadGrid2.Items(cpt)(
"CodePostal"
).FindControl(
"LstCodePostal"
), DropDownList)
Lstcode.DataSource = DsVilleCodePostal
Lstcode.DataTextField =
"VILLE"
Lstcode.DataValueField =
"CODE_POSTAL"
Lstcode.DataBind()
Lstcode.SelectedValue =
"G5Y7R7"
cpt = cpt + 1
Loop
End
Sub
Private
Sub
RadGrid2_NeedDataSource(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridNeedDataSourceEventArgs)
Handles
RadGrid2.NeedDataSource
If
Not
IsPostBack
Then
dt = AjouterLigne(dt)
' call the method to create row
ViewState(
"dt"
) = dt
End
If
dt =
DirectCast
(ViewState(
"dt"
), DataTable)
RadGrid2.DataSource = dt
End
Sub
Private
Sub
RadGrid2_PreRender(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
RadGrid2.PreRender
RadGrid2.MasterTableView.RenderColumns(1).Display =
False
End
Sub
Thank you
Myriam