2010-04-14 57 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 
} 
相關問題