2010-04-14 51 views
0

喜有人知道如何在C#中使用的DataBinder.Eval的DataBinder.Eval在C#

其实我已经试过这

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

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

+0

你可以多发一点你的代码,请详细说明完整的用法。 – 2010-04-14 12:38:01

+0

只是我尝试通过c#代码而不是aspx内联使用DataBinder.Eval方法。所以我尝试了这样。但我没有成功。 DataBinder.Eval(对象容器,字符串表达式)这是签名。这里对象容器是什么意思?任何想法? – jestges 2010-04-14 12:43:08

回答

0

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

+0

那么在C#中使用DataBinder.Eval方法是什么? – jestges 2010-04-14 12:45:32

3

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

这样的:

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%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

+0

嗨,谢谢你的回复。这是什么意思YOUR_OBJECT_PROPERTY_HERE?对不起,你能给我一个例子吗? – jestges 2010-04-14 12:47:39

+0

@jestges它会是这样的: [ObjectInstance]。[Property] or CollegeClass.CourseID – kemiller2002 2010-04-14 12:51:53

+0

我已经通过很多例子。在每个示例中,它们都显示静态控件,如但我想创建此链接按钮动态,并希望设置databinder.eval – jestges 2010-04-14 12:52:16

1
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowIndex > -1) 
    { 

     string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString(); 
    } 
} 
+1

对于中继器它是DataBinder.Eval(e.Item.DataItem,“ColumnName”) – mhenry1384 2013-10-01 01:24:07

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 
} 
相关问题