GridView
には、BoundFields
と2つのTemplateFields
があります。この2つのTemplateFields
では、ユーザーが変更できるDropDownList
とTextBox
を含むUserControls
を動的に作成します。ポストバック後に動的列が消える
PostBack
の後にコントロールの値を取得しようとすると、BoundFields
の値はそのまま残りますが、ダイナミックコントロールが表示されなくなります。私は再びそれらを作成することができますが、それはユーザーの値を取得しません...どのようにそれらが失われる前にこれらの値を得ることができますか? RowDataBound
イベントで
:ここ
は私のコードの一部です私のボタンのクリックイベントで
Select Case type
Case "BooleanBis"
e.Row.Cells(2).Controls.Clear()
Dim list1 As BooleanBisList = New BooleanBisList(avant, False)
e.Row.Cells(2).Controls.Add(list1)
e.Row.Cells(4).Controls.Clear()
Dim list2 As BooleanBisList = New BooleanBisList(apres, True)
e.Row.Cells(4).Controls.Add(list2)
Case "Boolean"
e.Row.Cells(2).Controls.Clear()
Dim list3 As BooleanList = New BooleanList(avant, False)
e.Row.Cells(2).Controls.Add(list3)
e.Row.Cells(4).Controls.Clear()
Dim list4 As BooleanList = New BooleanList(apres, True)
e.Row.Cells(4).Controls.Add(list4)
End Select
、私は、ユーザーコントロールを取得しよう:
Case "String"
temp.ChampValeurApres = DirectCast(Tableau1.Rows(i).Cells(selectedColumn).Controls(1), TextBox).Text
が、私はそれが存在しないというエラーを得る。
ありがとうございます!私はまだ問題がある、私は読み取り専用のコントロールを持つ列を持っています。これらのコントロールの値はポストバック後には取得されません。何か案が ? – user874854
@ user874854: 'readonly'コントロールは、ViewStateのclientsideの変更を維持しません(serversideの変更のみ)。 [Attributes](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.attributes.aspx)-collectionを介してそれらを 'readonly'にします。たとえば、' TextBox1.Attributes .Add( "readonly"、 "readonly"); '。この方法で、あなたはASP.NETをだます。詳細はこちら[こちら](http://www.codeproject.com/KB/aspnet/Readonly.aspx)をご覧ください。 –