动态绑定数据的gridview怎么把某列变成超链接的形式?

时间:2022-11-11 14:44:35
像我这样写结果把链接的html代码都显示出来了,网上我能找到的都是先绑定好数据源,再用<ItemTemplate><a href=Eval(**)></ItemTemplate>的方式。
动态数据源怎么办啊?


if(flag)
{
    mySqlDataAdapter = new SqlDataAdapter("SELECT '<a href=\"./Interaction.aspx?Type='+TopicId+'\" title=\"'+Introdution+'\">'+TopicName+'</a>' AS '分类', ThreadCount AS '发帖总数', ReThreadCount AS '回帖总数' FROM Interaction_Topics", myConn);
}
else
{
    mySqlDataAdapter = new SqlDataAdapter("SELECT '<a href=\"./Thread.aspx?Id='+Convert(varchar(10), Id)+'\">'+[Title]+'</a>' AS '标题', ChildCount AS '回复', HitCount AS '点击', Submit_Time AS '发表时间', User_Id AS '作者' FROM Threads WHERE Layer=0 AND Topic_Id=" + Id + " ORDER BY '发表时间' DESC", myConn);
}
myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet, "tb_Temp");
gView_DB.DataSource = myDataSet.Tables["tb_Temp"].DefaultView;
gView_DB.DataBind();

13 个解决方案

#1


我感觉这个问题可以用两个panel来放置2个gridview
通过条件来判断应该显示哪个gridview比较好。而不是去判断邦定哪个数据源。。

#2


加一个script
   function openwindow(url)
{
    var top,left,width,height;
   top=screen.height*0.125;
   left=screen.width*0.125;
   width=screen.width*0.75;
   height=screen.height*0.75;
    window.open(url,"_blank","status=no,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,width="+width+",height="+height+",top="+top+",left="+left);
   }
模板列中
<asp:TemplateField HeaderText="XXX">
                                    <ItemTemplate>
                                        <a href="#" onclick="openwindow('../Group/GroupInfoView.aspx?para=<%# Eval("ID") %>');">
                                            <%# Eval("XXX") %>
                                        </a>
                                    </ItemTemplate>
                                </asp:TemplateField>

#3


引用 1 楼 isoftstonesgg帅帅 的回复:
我感觉这个问题可以用两个panel来放置2个gridview
通过条件来判断应该显示哪个gridview比较好。而不是去判断邦定哪个数据源。。


就算只有一个数据源
mySqlDataAdapter = new SqlDataAdapter("SELECT '<a href=\"./Thread.aspx?Id='+Convert(varchar(10), Id)+'\">'+[Title]+'</a>' AS '标题', ChildCount AS '回复', HitCount AS '点击', Submit_Time AS '发表时间', User_Id AS '作者' FROM Threads WHERE Layer=0 AND Topic_Id=" + Id + " ORDER BY '发表时间' DESC", myConn);

但是有传入参数,所以不能预先设定模板吧?

#4


把GRIDVIEW的列属性改一下enableHTML(好像是这个吧)应该可以

#5


其实还是建议你把该列设置为模板列

#6


在模板列里实现简单~

#7


用事件也可以实现
  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string led_id = e.Row.Cells[2].Text;//获取你超链接页面需传的值
            LinkButton lb_update = (LinkButton)e.Row.Cells[1].FindControl("Row_Update");  //把需要超链的列模板做为LinkButton,Row_Update是控件名字
            string _jsEdit = "showModalDialog('Led_action.aspx?Led_id=" + led_id+" ',null,'dialogWidth:500px;dialogHeight:300px;center:yes;status:no;scroll:no;help:no;resizable:no')"; //javascipt 语句,我的这个是打开子页面的。
            lb_update.Attributes.Add("onclick", _jsEdit);
        }
    }

#8


在绑定的时候用判断下 mySqlDataAdapter ==(数据源)?Eval('a'):Eval('b')

#9


使用模板列即可! 模板列里丢个<a>标签,然后用Eval帮顶数据

#10


引用 7 楼 net85 的回复:
用事件也可以实现
  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
  string led_id = e.Row.Cells[2].Text;//获取你超链接页面……



引用 8 楼 zhengbin215 的回复:
在绑定的时候用判断下 mySqlDataAdapter ==(数据源)?Eval('a'):Eval('b')


应该可以解决你的问题了

#11


GridView里面有个HyperLinkField的模板列,就是超级链接了

#12


该回复于2010-04-20 08:19:17被版主删除

#13


引用 9 楼 yao970953039 的回复:
使用模板列即可! 模板列里丢个<a>标签,然后用Eval帮顶数据

顶一下

#1


我感觉这个问题可以用两个panel来放置2个gridview
通过条件来判断应该显示哪个gridview比较好。而不是去判断邦定哪个数据源。。

#2


加一个script
   function openwindow(url)
{
    var top,left,width,height;
   top=screen.height*0.125;
   left=screen.width*0.125;
   width=screen.width*0.75;
   height=screen.height*0.75;
    window.open(url,"_blank","status=no,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,width="+width+",height="+height+",top="+top+",left="+left);
   }
模板列中
<asp:TemplateField HeaderText="XXX">
                                    <ItemTemplate>
                                        <a href="#" onclick="openwindow('../Group/GroupInfoView.aspx?para=<%# Eval("ID") %>');">
                                            <%# Eval("XXX") %>
                                        </a>
                                    </ItemTemplate>
                                </asp:TemplateField>

#3


引用 1 楼 isoftstonesgg帅帅 的回复:
我感觉这个问题可以用两个panel来放置2个gridview
通过条件来判断应该显示哪个gridview比较好。而不是去判断邦定哪个数据源。。


就算只有一个数据源
mySqlDataAdapter = new SqlDataAdapter("SELECT '<a href=\"./Thread.aspx?Id='+Convert(varchar(10), Id)+'\">'+[Title]+'</a>' AS '标题', ChildCount AS '回复', HitCount AS '点击', Submit_Time AS '发表时间', User_Id AS '作者' FROM Threads WHERE Layer=0 AND Topic_Id=" + Id + " ORDER BY '发表时间' DESC", myConn);

但是有传入参数,所以不能预先设定模板吧?

#4


把GRIDVIEW的列属性改一下enableHTML(好像是这个吧)应该可以

#5


其实还是建议你把该列设置为模板列

#6


在模板列里实现简单~

#7


用事件也可以实现
  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string led_id = e.Row.Cells[2].Text;//获取你超链接页面需传的值
            LinkButton lb_update = (LinkButton)e.Row.Cells[1].FindControl("Row_Update");  //把需要超链的列模板做为LinkButton,Row_Update是控件名字
            string _jsEdit = "showModalDialog('Led_action.aspx?Led_id=" + led_id+" ',null,'dialogWidth:500px;dialogHeight:300px;center:yes;status:no;scroll:no;help:no;resizable:no')"; //javascipt 语句,我的这个是打开子页面的。
            lb_update.Attributes.Add("onclick", _jsEdit);
        }
    }

#8


在绑定的时候用判断下 mySqlDataAdapter ==(数据源)?Eval('a'):Eval('b')

#9


使用模板列即可! 模板列里丢个<a>标签,然后用Eval帮顶数据

#10


引用 7 楼 net85 的回复:
用事件也可以实现
  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
  string led_id = e.Row.Cells[2].Text;//获取你超链接页面……



引用 8 楼 zhengbin215 的回复:
在绑定的时候用判断下 mySqlDataAdapter ==(数据源)?Eval('a'):Eval('b')


应该可以解决你的问题了

#11


GridView里面有个HyperLinkField的模板列,就是超级链接了

#12


该回复于2010-04-20 08:19:17被版主删除

#13


引用 9 楼 yao970953039 的回复:
使用模板列即可! 模板列里丢个<a>标签,然后用Eval帮顶数据

顶一下