DataBinder.Eval в C#
Привет кто-нибудь знает, как использовать databinder.eval в C#
На самом деле я пробовал это
LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
это показывает ошибку. Что не так с этим?
4 ответа
Например, на странице дизайна вы можете использовать как:
<asp:Button ID="btnEdit" CommandName="Edit"
CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
CssClass="cursor_hand" runat="server" Text="Edit" />
Код позади:
int rowIndex = int.Parse(e.CommandArgument.ToString());
if (e.CommandName.Equals("Edit"))
{
//do something
}
Вы не можете использовать Eval в коде за страницей aspx.
этот:
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
должно быть так:
lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;
Чтобы заполнить YOUR_OBJECT_PROPERTY_HERE, вам нужно либо указать object.property и т. Д., Как обычно, в коде C#, либо вам придется использовать отражение, чтобы получить значение свойства из объекта (что eval делает для вас).
Вот ссылка, показывающая, как использовать отражение для получения информации о свойствах от объекта. Вы можете использовать его для дублирования работы eval, если вам необходимо: https://web.archive.org/web/1/http://articles.techrepublic.com.com/5100-10878_11-6099345.html
Ссылка на метод DataBinder Eval: http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx
Как работает метод DataBinder Eval (и почему автор считает, что его следует избегать) http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex > -1)
{
string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString();
}
}
Вы должны использовать выражение Eval и <% %>
в коде *.aspx не с кодом C#.