任何人都知道如何在c#
中使用databinder.eval其实我试过这个
LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
显示错误。这有什么不对吗?
答案 0 :(得分:3)
您不能在aspx页面后面的代码中使用Eval。
这样:
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
应该是这样的:
lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;
要填写YOUR_OBJECT_PROPERTY_HERE,您需要在C#代码中指定object.property等,或者您必须使用反射从对象中获取属性值(这是eval为您所做的)。 / p>
这是一个链接,显示如何使用反射从对象获取属性信息。如果需要,您可以使用它来复制eval的工作方式:https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/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
答案 1 :(得分:3)
对于设计页面中的示例,您可以使用:
<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
}
答案 2 :(得分:1)
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex > -1)
{
string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString();
}
}
答案 3 :(得分:0)
您应该在* .aspx代码中使用Eval表达式和<% %>
而不是C#代码。