DataBinder.Eval in c#

寵の児 提交于 2019-12-08 07:59:57

问题


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?


回答1:


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: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/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




回答2:


For Example in design page you can use like:

<asp:Button ID="btnEdit" CommandName="Edit" 
    CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
    CssClass="cursor_hand" runat="server" Text="Edit" />

Code Behind:

int rowIndex = int.Parse(e.CommandArgument.ToString());

if (e.CommandName.Equals("Edit"))
{
   //do something
}



回答3:


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

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



回答4:


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



来源:https://stackoverflow.com/questions/2637330/databinder-eval-in-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!