0

グリッド ビューをデータ テーブルにバインドしています。バインド後にいくつかの値を計算したい これを達成するための簡単で一般的な方法は、RowDataBound イベントですべての計算を行い、行内のコントロールを見つけて、それらに計算値を入力することです。しかし、現在、グリッド ビューにはコントロールがなく、Eval メソッドを直接使用して値を表示しています。

DataBound イベントのグリッド ビュー行に関連付けられたデータ項目を更新して、コントロールの追加を回避し、テンプレート フィールドの計算列に直接アクセスできるようにする方法があるかどうか疑問に思っています。

protected void gvSuspensions_DataBound(object sender, EventArgs e)
{
   foreach (GridViewRow row in gvPreviousSuspensions.Rows)
   {
      DataRowView rowView = (DataRowView)row.DataItem;// getting DataItem null :(
      rowView["ComputedColumn"] = "ComputedValue";
   }
}

そして、このように直接使用できます

<asp:TemplateField>
    <ItemTemplate>
       <%# Eval("ComputedColumn") %>
    </ItemTemplate>
</asp:TemplateField>

しかし、私はnull row.DataItemを取得しています!

何か案が?

4

1 に答える 1

0

代わりに RowDataBound イベントを使用する必要があります。これにより、バインドされている現在の行への参照が得られます。

protected void gvSuspensions_RowDataBound(Object sender, GridViewRowEventArgs e)

e.Row.DataItem は、アクセスする必要があるものです。

RowDataBound のリファレンス

于 2012-12-28T14:22:34.050 に答える