これは初歩的な問題だと感じていますが、何かが欠けているに違いありません。
私はTelerik Radgridを持っています。ItemDataBound
列の 1 つで、イベント中にいくつかのコントロールを追加します。これらのコントロールは一種のチェックボックスとして機能するため、人々がクリックしたときに Javascript を使用していくつかのプロパティを変更します。
すべてを保存する際に、ユーザーがボタンをクリックすると、ポストバックが発生します。
ポストバック後、動的に作成されたコントロールがなくなりました。
それらの値を取得して保存するにはどうすればよいですか?
乾杯、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 のクリックに応答する Javascript:
$(".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」に設定されています。