请问下,怎么把GridView中的值变成超链接

两仪式啃西瓜 2014-09-28 04:06:21
GridView中的值跟随DropDownList选择的值而改变,我的GridView并没有直接绑定数据,DropDownList的值是从数据库里取的,请问现在该怎么把GridView的中值变成超链接啊
...全文
592 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhj_2679464683 2014-10-10
  • 打赏
  • 举报
回复
GridView当前行绑定数据库商品详细信息提供超链接跳转页面示例 //CridView控件设置超链接 <asp:GridView ID="gvGoodsInfo" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Font-Size="9pt" AutoGenerateColumns="False" AllowPaging="True" PageSize="8" OnPageIndexChanging="gvGoodsInfo_PageIndexChanging" Width="450px"> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <EditRowStyle BackColor="#999999" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#CBCF7A" ForeColor="Black" HorizontalAlign="Right" /> <HeaderStyle BackColor="#CBCF7A" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="PicId" HeaderText="商品ID" /> <asp:BoundField DataField="PicType" HeaderText="所属类别" /> <asp:BoundField DataField="GoodsStock" HeaderText="库存量" /> <asp:BoundField DataField="PicName" HeaderText="商品名称" /> <asp:HyperLinkField HeaderText="详细信息" Text="详细信息" DataNavigateUrlFields="PicId" //点击超链接 DataNavigateUrlFormatString="EditGInfo.aspx?GoodsID={0}" Target="mainframe" NavigateUrl="~/MemberManage/EditGInfo.aspx" > <ControlStyle Font-Underline="False" ForeColor="Black" /> <ItemStyle Font-Underline="False" ForeColor="Black" /> <HeaderStyle Font-Underline="False" ForeColor="Black" /> </asp:HyperLinkField> </Columns> </asp:GridView><br /> //绑定控件显示数据库信息 protected void Page_Load(object sender, EventArgs e) { string sqlstr = "select * from tbPicture"; //创建执行查询操作的SQL语句 sqlcon.Open();//打开数据库连接 SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);//创建数据阅读器 DataSet myds = new DataSet(); //创建数据集 myda.Fill(myds); //填充数据集 gvGoodsInfo.DataSource = myds; //设定数据源 gvGoodsInfo.DataBind(); //绑定数据 sqlcon.Close(); //关闭数据库连接 }//CodeGo.net/ //通过点击超链接显示该页面加载的信息 SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { sqlconn.Open();//打开数据库连接 string strid = Page.Request.QueryString["GoodsID"];//接收页面传值 string sqlstr = "select * from tbPicture where PicId='" + strid + "'";//创建查询语句 SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlconn); DataSet myds = new DataSet(); myda.Fill(myds, "tbPicture"); DataRowView mydrv = myds.Tables["tbPicture"].DefaultView[0];//创建表视图DataRowView txtGID.Text = Convert.ToString(mydrv.Row["PicId"]); txtGName.Text = Convert.ToString(mydrv.Row["PicName"]); txtGType.Text = Convert.ToString(mydrv.Row["PicType"]); txtGStore.Text = Convert.ToString(mydrv.Row["GoodsStock"]); txtGPrice.Text = Convert.ToString(mydrv.Row["SellNumber"]); txtGIntro.Text = Convert.ToString(mydrv.Row["PicName"]) + "…"; iGPhoto.ImageUrl = Convert.ToString(mydrv.Row["PicPath"]); } }
qqm05 2014-10-08
  • 打赏
  • 举报
回复
aspx页面代码:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" onselectedindexchanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" BackColor="White"
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<%# Eval("Id") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%# Eval("Name") %>
<asp:CheckBox ID="sId" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="链接地址">
<ItemTemplate>
<a href="<%# Eval("URl") %>"><%# Eval("Name") %></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#000066" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#007DBB" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#00547E" />
</asp:GridView>

cs代码

using System;
using System.Collections.Generic;

namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<TestClass> list3 = CreateDataSource("DropDownList1的数据源");
DropDownList1.DataSource = list3;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "Id";
DropDownList1.DataBind();
}
}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
List<TestClass> list1 = CreateDataSource("GridView1的数据源一");
List<TestClass> list2 = CreateDataSource("GridView1的数据源二");
List<TestClass> list3 = CreateDataSource("GridView1的数据源三");
switch (DropDownList1.SelectedValue)
{
case "1": GridView1.DataSource = list1; break;
case "2": GridView1.DataSource = list2; break;
default: GridView1.DataSource = list3; break;
}
GridView1.DataBind();
}

private List<TestClass> CreateDataSource(string dataSourceName)
{
List<TestClass> list = new List<TestClass>();
TestClass model;
for (int i = 1; i < 10; i++)
{
model = new TestClass
{
Id = i,
Name = dataSourceName + "中的数据" + i,
Url = "http://localhost/" + dataSourceName+"的Url"+i
};
list.Add(model);
}
return list;
}

public class TestClass
{
public int Id { get; set; }
public string Name { get; set; }
public string Url { get; set; }
}

}
}






qqm05 2014-10-08
  • 打赏
  • 举报
回复
引用 16 楼 alone857567508 的回复:
[quote=引用 12 楼 anglecloudy 的回复:] [quote=引用 8 楼 alone857567508 的回复:] [quote=引用 3 楼 anglecloudy 的回复:]

<asp:hyperlinkfield datatextfield="xxx"
        datanavigateurlfields="ID"
        datanavigateurlformatstring="http://....}"  />
这种吗? 这个问题的前提与问题毫无关系呀?
第一次来这儿。。。。才找到怎么回复别人。。我读取的数据和超链接都是从数据库里取得,请问下这样也有么[/quote] gridview可以直接绑定你查询的数据结果呀?而且本来就是一直这么用的 前端(MS官方的例子):


<%@ Page language="C#" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>HyperLinkField Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:gridview id="OrdersGridView"         runat="server">

        <columns>

          <asp:boundfield datafield="OrderID" 
            headertext="OrderID"/>
          <asp:boundfield datafield="OrderDate" 
            headertext="Order Date"
            dataformatstring="{0:d}" />
          <asp:hyperlinkfield text="Details..."
            navigateurl="~\details.aspx"            
            headertext="Order Details"
            target="_blank" />

        </columns>

      </asp:gridview>

    </form>
  </body>
</html>
后端:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataTable dt = ...//(你的数据库查询)
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}
[/quote] 但是我要的效果是,GridView的值跟随DropDownList选择的值而改变的,所以我GridView并没有绑定任何数据,数据的绑定都是在DropDownList中的,那请问下,现在还能让GridView中的值变成超链接么[/quote] 可以。GridView数据源是在Page_Load中绑定,还是在DropDownList的SelectedIndexChanged中绑定,跟GridView中的数据表现形式没有关系的。GridView数据可以通过自定义模板列来灵活展现
Delta 2014-09-29
  • 打赏
  • 举报
回复
来学习一下了。。。
  • 打赏
  • 举报
回复
引用 15 楼 Z65443344 的回复:
使用模板列,把列的类型换一下 然后用代码给单元格赋值
很厉害的呀
低下头8吻你 2014-09-29
  • 打赏
  • 举报
回复

<asp:TemplateField HeaderText="卡号状态" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" ItemStyle-Width="45px">
                    <ItemTemplate>
                        <a id="Al" href='<%#Eval("Url")'>链接</a>
                    </ItemTemplate>
                    <ItemStyle Width="45px" HorizontalAlign="Left" />
                </asp:TemplateField>
搞定
  • 打赏
  • 举报
回复
什么年代了 还用GridView;
qzyf1992 2014-09-28
  • 打赏
  • 举报
回复
数据源使用list即可
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
引用 14 楼 qqm05 的回复:
引用 10 楼 alone857567508 的回复:
[quote=引用 9 楼 starfd 的回复:] GridView的数据并不一定是要从数据库里来的。。。。。直接内存数据也是可以的
噢噢,魔兽老玩家啊。。。关键是我的GridView并没有绑定任何数据,而是跟随DropDownList选择的值而变化的,请问下,那现在还怎么让GridView中的数据变成超链接,数据有很多,肯定不能直接加的
你的GridView不绑定数据怎么会有数据显示? 你说这GridView的数据会随DropDownList的选择而变化,只是说GridView的数据源会随DropDownList的选中值改变而改变罢了[/quote] 恩,我表达错了,但是我没有直接给GridView绑定SqlDataSource,那请问下现在还能让GridView中的值变成超链接么
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
引用 12 楼 anglecloudy 的回复:
[quote=引用 8 楼 alone857567508 的回复:] [quote=引用 3 楼 anglecloudy 的回复:]

<asp:hyperlinkfield datatextfield="xxx"
        datanavigateurlfields="ID"
        datanavigateurlformatstring="http://....}"  />
这种吗? 这个问题的前提与问题毫无关系呀?
第一次来这儿。。。。才找到怎么回复别人。。我读取的数据和超链接都是从数据库里取得,请问下这样也有么[/quote] gridview可以直接绑定你查询的数据结果呀?而且本来就是一直这么用的 前端(MS官方的例子):


<%@ Page language="C#" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>HyperLinkField Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:gridview id="OrdersGridView"         runat="server">

        <columns>

          <asp:boundfield datafield="OrderID" 
            headertext="OrderID"/>
          <asp:boundfield datafield="OrderDate" 
            headertext="Order Date"
            dataformatstring="{0:d}" />
          <asp:hyperlinkfield text="Details..."
            navigateurl="~\details.aspx"            
            headertext="Order Details"
            target="_blank" />

        </columns>

      </asp:gridview>

    </form>
  </body>
</html>
后端:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataTable dt = ...//(你的数据库查询)
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}
[/quote] 但是我要的效果是,GridView的值跟随DropDownList选择的值而改变的,所以我GridView并没有绑定任何数据,数据的绑定都是在DropDownList中的,那请问下,现在还能让GridView中的值变成超链接么
於黾 2014-09-28
  • 打赏
  • 举报
回复
使用模板列,把列的类型换一下 然后用代码给单元格赋值
qqm05 2014-09-28
  • 打赏
  • 举报
回复
引用 10 楼 alone857567508 的回复:
引用 9 楼 starfd 的回复:
GridView的数据并不一定是要从数据库里来的。。。。。直接内存数据也是可以的
噢噢,魔兽老玩家啊。。。关键是我的GridView并没有绑定任何数据,而是跟随DropDownList选择的值而变化的,请问下,那现在还怎么让GridView中的数据变成超链接,数据有很多,肯定不能直接加的
你的GridView不绑定数据怎么会有数据显示? 你说这GridView的数据会随DropDownList的选择而变化,只是说GridView的数据源会随DropDownList的选中值改变而改变罢了
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
引用 11 楼 qqm05 的回复:
[quote=引用 8 楼 alone857567508 的回复:] [quote=引用 3 楼 anglecloudy 的回复:]

<asp:hyperlinkfield datatextfield="xxx"
        datanavigateurlfields="ID"
        datanavigateurlformatstring="http://....}"  />
这种吗? 这个问题的前提与问题毫无关系呀?
第一次来这儿。。。。才找到怎么回复别人。。我读取的数据和超链接都是从数据库里取得,请问下这样也有么[/quote] 用模板列,可以自定义列数据的展现形式,包括同时关联多个数据库字段,自然可以实现你这个超链接的需求[/quote] 但是我的GridView没有绑定任何数据,而是跟随DropDownList选择的值改变的,请问这种情况下模板列也能实现么
OenAuth.Core 2014-09-28
  • 打赏
  • 举报
回复
引用 8 楼 alone857567508 的回复:
[quote=引用 3 楼 anglecloudy 的回复:]

<asp:hyperlinkfield datatextfield="xxx"
        datanavigateurlfields="ID"
        datanavigateurlformatstring="http://....}"  />
这种吗? 这个问题的前提与问题毫无关系呀?
第一次来这儿。。。。才找到怎么回复别人。。我读取的数据和超链接都是从数据库里取得,请问下这样也有么[/quote] gridview可以直接绑定你查询的数据结果呀?而且本来就是一直这么用的 前端(MS官方的例子):


<%@ Page language="C#" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>HyperLinkField Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:gridview id="OrdersGridView"         runat="server">

        <columns>

          <asp:boundfield datafield="OrderID" 
            headertext="OrderID"/>
          <asp:boundfield datafield="OrderDate" 
            headertext="Order Date"
            dataformatstring="{0:d}" />
          <asp:hyperlinkfield text="Details..."
            navigateurl="~\details.aspx"            
            headertext="Order Details"
            target="_blank" />

        </columns>

      </asp:gridview>

    </form>
  </body>
</html>
后端:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataTable dt = ...//(你的数据库查询)
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}
qqm05 2014-09-28
  • 打赏
  • 举报
回复
引用 8 楼 alone857567508 的回复:
[quote=引用 3 楼 anglecloudy 的回复:]

<asp:hyperlinkfield datatextfield="xxx"
        datanavigateurlfields="ID"
        datanavigateurlformatstring="http://....}"  />
这种吗? 这个问题的前提与问题毫无关系呀?
第一次来这儿。。。。才找到怎么回复别人。。我读取的数据和超链接都是从数据库里取得,请问下这样也有么[/quote] 用模板列,可以自定义列数据的展现形式,包括同时关联多个数据库字段,自然可以实现你这个超链接的需求
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
GridView的数据并不一定是要从数据库里来的。。。。。直接内存数据也是可以的
噢噢,魔兽老玩家啊。。。关键是我的GridView并没有绑定任何数据,而是跟随DropDownList选择的值而变化的,请问下,那现在还怎么让GridView中的数据变成超链接,数据有很多,肯定不能直接加的
  • 打赏
  • 举报
回复
GridView的数据并不一定是要从数据库里来的。。。。。直接内存数据也是可以的
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
引用 3 楼 anglecloudy 的回复:

<asp:hyperlinkfield datatextfield="xxx"
        datanavigateurlfields="ID"
        datanavigateurlformatstring="http://....}"  />
这种吗? 这个问题的前提与问题毫无关系呀?
第一次来这儿。。。。才找到怎么回复别人。。我读取的数据和超链接都是从数据库里取得,请问下这样也有么
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
引用 2 楼 q107770540 的回复:
http://www.cnblogs.com/zjz008/archive/2009/09/22/1571531.html
但是我的GridView并没有绑定数据库,而是和DropDownList选择中的值有关,请问下这样模板列也有用么
两仪式啃西瓜 2014-09-28
  • 打赏
  • 举报
回复
@anglecloudy
加载更多回复(5)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧