日期:2014-05-18  浏览次数:20556 次

请教,关于GridView中超链接的问题
我在GridView中填充自己的数据,怎么样能在填充的同时在指定的列添加超链接?(不是新增一列,而是读出的指定列)
注:我用的是ObjectDataSource,没有直接数据绑定,请各位指点一下。
我在RowDataBound事件中利用:
C# code
         HyperLink href = (HyperLink)e.Row.Cells[6].Controls[];
         href.NavigateUrl = "12345678.asp";


抛出异常。

以下是在cs类中写的方法
C# code

    public DataSet TdataSet(string ContraAct,string RefDate,string DueDate)
    {
        string QueryString = "select * from Test";
        SqlAdpter.SelectCommand = new SqlCommand(QueryString,SqlConn);
        SqlAdpter.Fill(ds, "user");      
        return ds;  
    }


请多多指教。

------解决方案--------------------
将指定的列变成模板列
<asp:TemplateField HeaderText="列名">
<ItemTemplate>
<a href="12345678.asp"><%# Eval("DataFieldName") %></a>
</ItemTemplate>
</asp:TemplateField>
------解决方案--------------------
HTML code

<ItemTemplate> 
    <asp:HyperLink ..../>
</ItemTemplate>

------解决方案--------------------
我用的是ObjectDataSource,没有直接数据绑定,请各位指点一下。
====
模板列中a链接属性绑定 方法
------解决方案--------------------
我在GridView中填充自己的数据,怎么样能在填充的同时在指定的列添加超链接?(不是新增一列,而是读出的指定列) 
==
如果打算使用编程的方式,必须自己在后台用代码创建模版列
------解决方案--------------------
探讨
将指定的列变成模板列
<asp:TemplateField HeaderText="列名">
<ItemTemplate>
<a href="12345678.asp"> <%# Eval("DataFieldName") %> </a>
</ItemTemplate>
</asp:TemplateField>

------解决方案--------------------
首先保证你的objectdatasource返回给gridview控件的数据源是dataset
然后你可以通过以下编程来达到你的目的:
VB.NET code

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim drv As System.Data.DataRowView = CType(e.Row.DataItem, DataRowView)
            Dim link As HyperLink
            link = CType(e.Row.FindControl("hyp"), HyperLink)
            link.NavigateUrl = drv("pic_path")
            link.Text = "动态生成的连接"
        End If
      
    End Sub

------解决方案--------------------
HTML code
<ItemTemplate> 
    <asp:HyperLink ..../>
</ItemTemplate
或者

<asp:TemplateField HeaderText="列名"> 
<ItemTemplate> 
    <a href="12345678.asp"> <%# Eval("DataFieldName") %> </a> 
</ItemTemplate> 
</asp:TemplateField>