views:

445

answers:

4

Hi anybody know how to use databinder.eval in c#

Actually I've tried this

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

it is showing error. Whats the wrong with this?

A: 

You should use Eval expression and <% %> in *.aspx code not with C# code.

sashaeve
Then what is the use of DataBinder.Eval method in c#?
jestges
+3  A: 

You can't use Eval in the code behind of an aspx page.

this:

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

should be this:

lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;

To fill in YOUR_OBJECT_PROPERTY_HERE you either need to specify the object.property etc like normal in C# code, or you'll have to use reflection to get the property value from the object (which is what eval does for you).

Here is a link showing how to use reflection to get the property information from an object. You can use it to duplicate how eval works if you need to: http://articles.techrepublic.com.com/5100-10878_11-6099345.html

Link to DataBinder Eval Method: http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx

How the DataBinder Eval Method works (and why the author thinks it should be avoided) http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx

Kevin
Hi Thank you for your reply. What does it mean by YOUR_OBJECT_PROPERTY_HERE ? I'm sorry can you give me an example?
jestges
@jestges it would be something like: [ObjectInstance].[Property] or CollegeClass.CourseID
Kevin
I've gone throug many examples. In every example they are showing with static controls like <asp:LinkButton ID="lnkbtnname" OnCommand="lnkbtnname_Click" Text='<%# DataBinder.Eval(Container.DataItem,"NAME") %>' runat="server"></asp:LinkButton> But I want to create this link buttondynamically and want to set the databinder.eval
jestges
A: 

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

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