Что именно возвращает e.Row.DataItem .. MSDN говорит .. возвращает Объект, представляющий базовый объект данных, с которым связан объект GridViewRow.
Вот мой DataGrid ...
<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>
И я связываю его с моим бизнес-объектом List .. В строке DataBound Event я пытаюсь это ...
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 равен нулю ... и есть ли способ получить объект Patient вернуться из GridView после привязки.