e.Row.DataItem 반환 값은 정확히 무엇입니까? MSDN에서 .. 은 GridViewRow 개체가 바인딩되는 기본 데이터 개체를 나타내는 개체를 반환합니다. ... 나는 이것을 시도,다시 그리드보기에서 비즈니스 개체 가져 오기
다음는
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="PracticeCode" HeaderText="PracticeCode" SortExpression="PracticeCode" />
<asp:BoundField DataField="AccountNo" HeaderText="AccountNo" SortExpression="AccountNo" />
<asp:BoundField DataField="PatientName" HeaderText="PatientName" SortExpression="PatientName" />
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="LblStatus" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
내 데이터 그리드 ... 내가 행 데이터 바인딩 이벤트에서 .. 내 비즈니스 오브젝트 목록 < 환자>와 바인딩
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
Patient p1 = (Patient)e.Row.DataItem;
Label lbl = e.Row.FindControl("LblStatus") as Label;
if (p1 == null)
{
throw new Exception("P1 is null");
}
if (p1.OpenItems.Count > 0)
{
lbl.Text = "Has open Items";
}
else
{
lbl.Text = "";
}
}
나는 예외를 얻을 P1은 .. 왜 ... 어떻게 내가 놓친 거지 널입니다 ...
참고 :이 작업을 수행하는 다른 방법이있을 수 있지만 특히 내 p1이 null 인 이유를 찾고 있습니다. 환자 바인딩 후 GridView에서 개체가 다시 나타납니다.
당신이 DataKey을 시도 했습니까? –