2011-01-17 17 views
1

のプレースホルダにボタンを追加します。現時点では、データがPage_Loadにバインドされた後にButtonを追加しています。問題は、データバインディングメソッドがポストバックで呼び出されないため、ボタンをクリックすると消えてしまうことです。は、動的に、私は基本的にこのような何かを持っているデータグリッド

これを行う方法に関するご提案はありますか?問題は、ボタンを作成するためにグリッドアイテムのいくつかの属性を知る必要があるため、データがバインドされる前に作成することができないということです。

答えて

1

ItemCreatedイベントに登録することはどうですか?

マークアップ:

<asp:datagrid id="DGrid" runat="server" OnItemCreated="DGrid_ItemCreated" AutoGenerateColumns="false">...</asp:DataGrid> 

コードビハインド:

protected void DGrid_ItemCreated(object sender, DataGridItemEventArgs e) 
{ 
    var ph e.Item.FindControl("PH") as PlaceHolder; 
    // ... 
} 

UPDATE

e.Item.DataItemがポストバックでnullときの状況について:唯一の信頼できる情報(例えば、データ・バインドコントロールプロパティ)は、ポストバック(ViewStateが有効な場合)、t彼は全データ項目がそれらを生き残らない。したがって、自分で状態を管理する必要があります。必要なデータだけをViewStateに保持することができます(データ項目全体を吹き飛ばすことはできません)。

+0

私はまだ何とかポストバックのバインドされたデータにアクセスする必要があります - e.Item.DataItemはそれまでにNULLであるようです。 – hrnt

+0

私の更新を見てください。 – volpav

+0

通常、e.Item.DataItemはviewstateの問題ではなく、ヘッダーまたはフッターの行をレンダリングしているため、nullです。 if(e.Item.DataItemが何もない){return;}を実行し、何が起こるかを見てください。 – Peter

関連する問題