刚开始接触ASP.NET一些低级问题请教大家
DataBinder.Eval()这个函数什么作用?
1。以下是C#中
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
......
<form Runat="Server">
<asp:Repeater
  ID="rptEmployees"
  Runat="Server">
//////////////////////////////////////////开始
<ItemTemplate>
<a href='<%#String.Format("details.aspx?id={0}",DataBinder.Eval(Container.DataItem,"EmployeeID")) %>'>
<%#DataBinder.Eval(Container.DataItem, "LastName" )%></a>
</ItemTemplate>
//////////////////////////////////////////结束
</asp:Repeater></form>
......
2。这里是VB.NET中
//////////////////////////////////////////开始
<ItemTemplate>
<a href='<%#String.Format("details.aspx?id={0}",Container.DataItem("EmployeeID") %>'>
<%#DataBinder.Eval(Container.DataItem, "LastName" )%></a>
</ItemTemplate>
//////////////////////////////////////////结束----------------------------------------
另外在ASP.NET中
conNorthwind = new SqlConnection( @"Server=(local);Integrated Security=SSPI; Database=Northwind" );

conNorthwind = new SqlConnection( @"Server=(local);uid=sa;pwd=sa; Database=Northwind" );
有什么不同,前者导致没有SELECT权限,怎么设置才可以成为有权限!
偶对SQL Server2000数据库也刚入门,请各位不惜赐教,谢谢!

解决方案 »

  1.   

    <%#DataBinder.Eval(Container.DataItem, "LastName" )%>
    这种形式是没有不同的,除非要转换时(函数不同)这是连接方式不同
    前一种是信任连接,集成的
    后一种是由数据库用户决定的,用得较多
      

  2.   

    谢谢,但在C#中若是不用DataBinder.Eval()就会报错!怎么回事?
    怎么设置就可以信任连接有select权限?
      

  3.   

    这是因为C#和VB.NET的类型系统不同. Container.DataItem的类型是Object, 但实际可能是DataRowView或是一个数组中的元素等等, Container.DataItem是Object, 因此没有索引属性, 在C#中Container.DataItem[...]就是错误的, 必须先把DataItem强转一下类型告诉编译器这个对象的实际类型, 才能调用索引属性, 而VB.NET不同, 我不是十分清楚, 好像是编译器会先自动去寻找这个对象的实际类型然后调用. 因此如果在C#中应该写((DataRowView)Container.DataItem)[...]. 
    当然也可以用DataBinder.Eval(), 这个是编译器提供的一个数据绑定功能, 而且这个函数提供了类似VB.NET的类型判断, 实际上是用到了.Net中的Reflection反射来得到对象的类型.
    但是正因为用到了反射, 速度会比直接类型转换来的慢