1

嗨,有人知道如何在 c# 中使用 databinder.eval

其实我试过这个

LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");

它显示错误。这有什么问题?

4

4 回答 4

4

您不能在 aspx 页面后面的代码中使用 Eval。

这个:

lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");

应该是这样的:

lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;

要填写 YOUR_OBJECT_PROPERTY_HERE,您需要像在 C# 代码中一样指定 object.property 等,或者您必须使用反射从对象中获取属性值(这是 eval 为您所做的)。

这是一个链接,展示了如何使用反射从对象中获取属性信息。如果需要,您可以使用它来复制 eval 的工作方式:https ://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6099345.html

链接到 DataBinder 评估方法:http: //msdn.microsoft.com/en-us/library/4hx47hfe.aspx

DataBinder Eval 方法的工作原理(以及作者认为应该避免使用它的原因)http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx

于 2010-04-14T12:45:45.597 回答
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
}
于 2012-10-20T05:13:07.040 回答
2
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowIndex > -1)
    {

        string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString();
    }
}
于 2010-08-09T08:38:25.197 回答
0

您应该在 *.aspx 代码中使用 Eval 表达式,而<% %>不是在 C# 代码中使用。

于 2010-04-14T12:41:17.317 回答