页面显示:
<%#show_web(container.dataitem("web"))%>
后台程序:
function show_web(byval fld as object) as string
    if fld<>"" then
        return "<a href=""" & fld & """ target=""_blank"">网站</a>"
    end if
end function

解决方案 »

  1.   

    你这个是什么写法?
    没有见过
    function
    end function
    ?????????????
      

  2.   

    先定义模板列,
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:HyperLink ID="hlResource" text='<%# DataBinder.Eval(Container,"DataItem.地址字段名")%>' Target=_blank Width=80% Runat=server>
    </asp:HyperLink>
    </ItemTemplate>
    </asp:TemplateColumn>然后再.cs中写上如下代码:protected void OnResourceItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType ==ListItemType.Item ||  e.Item.ItemType ==ListItemType.AlternatingItem )
    {
    HyperLink hlRead; this.hlRead =(HyperLink)(e.Item.FindControl ("hlResource"));
    if (判断Address是null直)
    { this.hlRead.NavigateUrl=AddURL(e.Item.ItemIndex); }

    }
    }
      

  3.   

    不对哦:
    ASP.ShowAll_aspx”并不包含对“hlRead”的定义
     protected void OnResourceItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType ==ListItemType.Item ||  e.Item.ItemType ==ListItemType.AlternatingItem )
    {
    HyperLink hlRead; this.hlRead =(HyperLink)(e.Item.FindControl ("hlResource"));
    if (address==null)
    { this.hlRead.NavigateUrl=AddURL(e.Item.ItemIndex); }

    }
    }
      

  4.   

    <%@Page debug=true%>
    <%@Import Namespace="System.Data"%>
    <script language="C#" runat="server">
    void Page_Load(object src,EventArgs e){
    DataTable table=new DataTable();
    table.Columns.Add(new DataColumn("addr",typeof(string)));
    table.Columns.Add(new DataColumn("name",typeof(string)));
    DataRow row;
    for(int i=0;i<10;i++){
    row=table.NewRow();
    if(i%3==0)
    row["addr"]=null;
    else
    row["addr"]="addr "+i.ToString();
    row["name"]="name "+i.ToString();
    table.Rows.Add(row);
    }
    grid.DataSource=table;
    grid.DataBind();
    }void BindAddr(object src,DataGridItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
    if(Convert.IsDBNull(((DataRowView)e.Item.DataItem)["addr"])){
    HyperLink link=(HyperLink)e.Item.Cells[0].Controls[0];
    link.NavigateUrl=null;
    }
    }
    }
    </script>
    <HTML><HEAD>
    <TITLE> Webdiyer 制造:) (www.webdiyer.com) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <asp:DataGrid runat="server" id="grid" autogenerateColumns=false OnItemDataBound="BindAddr">
    <Columns>
    <asp:HyperLinkColumn runat="server" DataTextField="name" DataNavigateUrlField="name" DataNavigateUrlFormatString="test.aspx?id={0}"/>
    </Columns>
    </asp:DataGrid>
    </form></BODY></HTML>
      

  5.   

    <script language="C#" runat="server">
      int startIndex;
      void BindGrid()
      {
      
       SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
       conn.Open();
       
         string  sql="Select id,cname,allmoney,address from [1200m]  order by cast(allmoney as float) desc";
         SqlDataAdapter da=new SqlDataAdapter(sql,conn);
         DataSet ds=new DataSet();
         da.Fill(ds,"changnews");
         
         Grid1.DataSource=ds.Tables["changnews"].DefaultView;
         Grid1.DataBind();
      }
      void Page_Load(Object src,EventArgs e)
      { 
          if(!IsPostBack) {
                startIndex =0;
                   }
          BindGrid();
      }
        void ChangePage(Object sender, DataGridPageChangedEventArgs e) 
      {    
          startIndex = e.NewPageIndex*Grid1.PageSize;
          Grid1.CurrentPageIndex = e.NewPageIndex;
          BindGrid();
      }
      
      void BindAddress(object src,DataGridItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
    {
    if(Convert.IsDBNull(((DataRowView)e.Item.DataItem)["address"]))
    {
    HyperLink link=(HyperLink)e.Item.Cells[0].Controls[0];
    link.NavigateUrl=null;
    }
    }
    }
     </script> <asp:DataGrid 
          AllowPaging="True"
          PageSize="25"
         Border="1"
     ItemStyle-Height="25"
     Width="560"
          PagerStyle-Mode="NumericPages"
          OnPageindexChanged="ChangePage"  
          AutoGenerateColumns="false"
          id="Grid1" runat="server">
          <Columns>
                <asp:TemplateColumn>
                 <ItemTemplate>
                    <asp:HyperLinkColumn  DataTextField="cname" DataNavigateUrlField="cname" DataNavigateUrlFormatString="Showyiid.aspx?id={0}" runat="server"/>
                 </ItemTemplate>
             </asp:TemplateColumn>   
      <asp:BoundColumn DataField="allmoney"  ItemStyle-Width="24%"  ItemStyle-HorizontalAlign="left"/>
    </Columns>
    </asp:DataGrid>
      

  6.   

    怎么没见你将DataGrid的ItemDataBound事件与BindAddress事件处理程序关联起来?<asp:DataGrid OnItemDataBound="BindAddress" .....
      

  7.   

    好象还是错的:
    异常详细信息: System.InvalidCastException: 指定的转换无效。
    是不是和address直有关系,有的是null直,有的直为空。是不是这儿转换无效。请帮忙!
      

  8.   

    你要的加上编号列的示例:test.aspx
    --------------------------------------
    <%@Page debug=true%>
    <%@Import Namespace="System.Data"%>
    <%@Import Namespace="System.IO"%>
    <script language="C#" runat="server">
    void Page_Load(object src,EventArgs e){
    DataTable table=new DataTable();
    table.Columns.Add(new DataColumn("addr",typeof(string)));
    table.Columns.Add(new DataColumn("name",typeof(string)));
    DataRow row;
    for(int i=0;i<10;i++){
    row=table.NewRow();
    if(i%3==0)
    row["addr"]=null;
    else
    row["addr"]="addr "+i.ToString();
    row["name"]="name "+i.ToString();
    table.Rows.Add(row);
    }
    grid.DataSource=table;
    grid.DataBind();
    }int i=1;//起始编号为1
    void BindAddr(object src,DataGridItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
    Literal lctrl=(Literal)e.Item.FindControl("idcol");
    if(lctrl!=null){
    lctrl.Text=i.ToString();
    i++;
    }
    if(Convert.IsDBNull(((DataRowView)e.Item.DataItem)["addr"])){
    HyperLink link=(HyperLink)e.Item.Cells[1].Controls[0];
    link.NavigateUrl=null;
    }
    }
    }</script>
    <HTML><HEAD>
    <TITLE> Webdiyer 制造:) (www.webdiyer.com) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <asp:DataGrid runat="server" id="grid" autogenerateColumns=false OnItemDataBound="BindAddr" width="300">
    <Columns>
    <asp:TemplateColumn HeaderText="编号">
    <ItemTemplate>
    <asp:Literal runat="server" id="idcol"/>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:HyperLinkColumn runat="server" DataTextField="name" DataNavigateUrlField="name" DataNavigateUrlFormatString="test.aspx?id={0}" HeaderText="链接"/>
    </Columns>
    </asp:DataGrid>
    </form></BODY></HTML>
      

  9.   


    <script language="C#" runat="server">
      int startIndex;
      void BindGrid()
      {
      
       SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
       conn.Open();
       
         string  sql="Select id,cname,allmoney,address from [500m]  order by cast(allmoney as float) desc";
         SqlDataAdapter da=new SqlDataAdapter(sql,conn);
         DataSet ds=new DataSet();
         da.Fill(ds,"changnews");
         
         Grid1.DataSource=ds.Tables["changnews"].DefaultView;
         Grid1.DataBind();
      }
      void Page_Load(Object src,EventArgs e)
      { 
          if(!IsPostBack) {
                startIndex =0;
                   }
          BindGrid();
      }  void ChangePage(Object sender, DataGridPageChangedEventArgs e) 
      {    
          startIndex = e.NewPageIndex*Grid1.PageSize;
          Grid1.CurrentPageIndex = e.NewPageIndex;
          BindGrid();
      }
        int i=1;//启始编号
      void BindAddr(object src,DataGridItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
    Literal lctrl=(Literal)e.Item.FindControl("idcol");
    if(lctrl!=null){
    lctrl.Text=i.ToString();
    i++;
    }
    if(Convert.IsDBNull(((DataRowView)e.Item.DataItem)["address"])){
    HyperLink link=(HyperLink)e.Item.Cells[0].Controls[0];
    link.NavigateUrl=null;
    }
    }
    }
     </script>              <Form runat="server">
                  <asp:DataGrid 
          AllowPaging="True"
          PageSize="25"
         Border="1"
     ItemStyle-Height="25"
     Width="560"
          PagerStyle-Mode="NumericPages"
          OnPageindexChanged="ChangePage"          
          CellPadding="0"
          CellSpacing="0" 
          AutoGenerateColumns="false"
      OnItemDataBound="BindAddr"
          id="Grid1" runat="server">
          <Columns>
      <asp:TemplateColumn>
                   <ItemTemplate>//这个Literal标记是什么意思,我怎么查不到
                         <asp:Literal runat="server" id="idcol"/>
                   </ItemTemplate>
          </asp:TemplateColumn>   <asp:HyperLinkColumn  DataTextField="cname" DataNavigateUrlField="id" DataNavigateUrlFormatString="Showyiid.aspx?id={0}" runat="server"/>   
      <asp:BoundColumn DataField="allmoney" HeaderText=""  ItemStyle-Width="24%"  ItemStyle-HorizontalAlign="left"/>
    </Columns>
    </asp:DataGrid> 
                </Form>
      

  10.   

    没看明白,你要startIndex干什么呢??Literal也是asp.net的web服务器控件。
      

  11.   

    这个分页是我从别人那里抄来的,我也不清楚startIndex是什么意思