나는 이것이 신참 문제라는 느낌을 갖지만, 뭔가 빠뜨린 것 같습니다.Telerik Radgrid 동적으로 추가 된 컨트롤이 포스트 백 이후 사라집니다.
저는 입니다. Telerik Radgrid입니다. 하나의 열에서 ItemDataBound
이벤트 중 일부 컨트롤을 추가합니다. 이러한 컨트롤은 정렬의 확인란으로 사용되므로 사람들이 클릭 할 때 자바 스크립트를 사용하여 일부 속성을 변경합니다.
모든 것을 저장하는 경우 사용자가 단추를 클릭하면 다시 게시가 발생합니다.
이제 포스트 백 후에 동적으로 생성 된 컨트롤이 사라졌습니다.
저장하기 위해 값을 검색하려면 어떻게해야합니까?
건배, CJ
편집 : ItemCreated 이벤트에
나는이 있습니다
If (TypeOf (e.Item) Is GridDataItem) Then
Dim dataItem As GridDataItem = CType(e.Item, GridDataItem)
Dim diCell As TableCell = dataItem("Periode")
Dim tbl As Table = CType(diCell.FindControl("tblPeriode"), Table)
Dim cell As TableCell
Dim sdsPerioden As New SqlDataSource()
sdsPerioden.ConnectionString = cs
sdsPerioden.SelectCommandType = SqlDataSourceCommandType.StoredProcedure
sdsPerioden.SelectCommand = "OPLEIDING_PERIODE_JAAR_SELECT_BY_OPLEIDING_ID"
sdsPerioden.SelectParameters.Add(New Parameter("INT_OPLEIDING_ID", DbType.Int32, Session("OPLEIDING_ID")))
Dim dv As DataView = CType(sdsPerioden.Select(DataSourceSelectArguments.Empty), DataView)
Dim iJaar As Integer = 0
sJaren = New List(Of String)
For Each row As DataRow In dv.Table.Rows
cell = New TableCell()
cell.BorderStyle = BorderStyle.None
cell.Style("margin-right") = "5px"
cell.Style("padding") = "0px"
cell.Width = Unit.Pixel((row("PERIODEN_PER_JAAR") * (15 + 2)) + ((row("PERIODEN_PER_JAAR")/2) * 3) + 1)
For i As Integer = 1 To row("PERIODEN_PER_JAAR")
Dim div As HtmlGenericControl = New HtmlGenericControl("div")
dv.ID = "div" + iJaar.ToString().PadLeft(2, "0") + iPeriode.ToString().PadLeft(2, "0")
dv.Style.Add("height", "15px")
dv.Style.Add("width", "15px")
dv.Style.Add("display", "inline-block")
dv.Style.Add("border-style", "solid")
dv.Style.Add("border-width", "1px")
dv.Style.Add("border-color", sKleur)
dv.Style.Add("background-color", "#FFFFFF")
dv.Attributes("IS_CHECKED") = "0"
dv.Attributes("class") = "periodeCheck"
cell.Controls.Add(div)
Next
tbl.Rows(0).Cells.Add(cell)
Next
End If
div의 클릭에 응답하는 자바 스크립트 :
$(".periodeCheck").click(function() {
if ($(this).attr('IS_CHECKED') == "0")
{
var color = $(this).css('border-left-color');
$(this).attr('IS_CHECKED', '1');
$(this).css('border-style', 'none');
$(this).css('background-color', color);
}
else
{
var color = $(this).css('background-color');
$(this).attr('IS_CHECKED', '0');
$(this).css('border-style', 'solid');
$(this).css('border-width', '1px');
$(this).css('border-color', color);
$(this).css('background-color', "#FFFFFF");
}
return false;
});
이제 저장 단추를 클릭하면 ItemCreated 이벤트가 먼저 발생하고 Button_Click 이벤트가 발생합니다. Button_Click 이벤트에서
나는이 있습니다
For i = 0 To rgOpleidingLeeritem.MasterTableView.Items.Count - 1
Dim tbl As Table = CType(rgOpleidingLeeritem.MasterTableView.Items(i).FindControl("tblPeriode"), Table)
Dim div As HtmlGenericControl
For Each cell As TableCell In tbl.Rows(0).Cells
For Each ctl As Control In cell.Controls
div = CType(ctl, HtmlGenericControl)
If (div.Attributes("IS_CHECKED") = "1") Then
'Do something
End If
Next
Next
Next
'
div의이 속성이 할 요소 관리자에 따르면'확인 '아무리 내가 얼마나 많은 div의, 부분에 도달되지 않습니다 무언가를하지'IS_CHECKED '을 클릭하면'1 '로 설정됩니다.
답장을 보내 주셔서 감사합니다. 불행히도 ItemCreated에서 행의 데이터에 액세스 할 수없는 것 같습니다. (분명히 이것은 ItemDataBound에서 사용 가능합니다) 그리고 나는 IDd와 같은 데이터를 필요로합니다. –
itemdatabound 동안 컨트롤 값 등을 설정할 수 있습니다. itemdatabound 이벤트 중에 정확히 무엇을하려고하는지에 대한 세부 정보를 제공해야합니다. – ajakblackgoat
코드를 변경 한 후 이제 ItemCreated에서 컨트롤을 만듭니다. Save 버튼을 클릭하면 ItemCreated가 button_click 이벤트 전에 실행되므로 컨트롤을 저장하기 전에 내 컨트롤이 다시 만들어지고 값이 손실됩니다. viewstate에서 이전 값을 다시 가져올 수 있습니까? –