HyperLinkField 如何根据数据库字段值跳转? 我用HyperLinkField 在GridView中实现修改页面跳转功能,用HyperLinkField 传过去id编号,然后数据库有个字段叫状态,如果状态是2,就不跳转,不是2就跳转到修改页面,怎么实现啊,请各位指导一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 加个 隐藏的label 存状态 后台 判断 label 的值 在处理跳转 方法1,使用TemplateFiled使用3目运算符判断方法2,在绑定事件里面判断 例子1<%@ Page Language="C#" EnableViewState="false" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> // 计算数据,完全可以从数据库取得 System.Data.DataTable CreateDataSourceByXianhuiMeng() { System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32))); dt.Columns.Add(new System.Data.DataColumn("State", typeof(System.String))); for (int i = 0; i < 8; i++) { dt.Rows.Add(new Object[] { i, i.ToString() }); } return dt; } protected void Page_Load(object sender, EventArgs e) { GridView1.DataSource = this.CreateDataSourceByXianhuiMeng(); GridView1.DataBind(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { String State = DataBinder.Eval(e.Row.DataItem, "State").ToString(); HyperLink h = e.Row.Cells[1].Controls[0] as HyperLink; if (State.Equals("2")) { h.Visible = false; } } }</script><html><head> <title></title></head><body> <form id="form1" runat="server"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField DataField="id" HeaderText="测试的" /> <asp:HyperLinkField DataNavigateUrlFields="Id" DataNavigateUrlFormatString="show.aspx?id={0}" DataTextField="State" /> </Columns> </asp:GridView> </form></body></html> 例子2<%@ Page Language="C#" EnableViewState="false" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> // 计算数据,完全可以从数据库取得 System.Data.DataTable CreateDataSourceByXianhuiMeng() { System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32))); dt.Columns.Add(new System.Data.DataColumn("State", typeof(System.String))); for (int i = 0; i < 8; i++) { dt.Rows.Add(new Object[] { i, i.ToString() }); } return dt; } protected void Page_Load(object sender, EventArgs e) { GridView1.DataSource = this.CreateDataSourceByXianhuiMeng(); GridView1.DataBind(); }</script><html><head> <title></title></head><body> <form id="form1" runat="server"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="id" HeaderText="测试的" /> <asp:TemplateField> <ItemTemplate> <%#Eval("State").ToString() == "2" ? "" : "<a href='show.aspx?id=" + Eval("Id") + "'>" + Eval("State") + "</a>"%> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </form></body></html> 谢谢楼上的哥们啊 由于急着用 我自己解决了,我换用了linkbutton,用CommandArgument传递了连个参数,包括状态参数,然后再后台用OnCommand事件判断状态,如果符合要求,就跳转,并传递编号参数,如果不符合要求就给出一个对话框提示。不过还是谢谢你的例子,同时感谢1楼和2楼的回答 C#.NET中插入数据语句出错 求助(asp.net,vb):关于判断request.params("id")改变listbox的选定的错误 客户端导入excel的问题 不知这是什么错? DataSet 在一个表单里面怎么实现查看和修改? 各位大虾请进,小问题,急,先谢了!!! DWZ框架下的问题 求一条复杂的Sql语句(oracle中的) ASP.NET网站部署问题 求大神帮忙看看有没有遇到这样的问题 服务端操作客户端脚本,为什么有错!急,在线! 有关ueditor(百度编辑器)的问题,见内容! asp.net mvc3 求助
加个 隐藏的label 存状态 后台 判断 label 的值 在处理跳转
方法2,在绑定事件里面判断
<%@ Page Language="C#" EnableViewState="false" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
// 计算数据,完全可以从数据库取得
System.Data.DataTable CreateDataSourceByXianhuiMeng()
{
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("State", typeof(System.String)));
for (int i = 0; i < 8; i++)
{
dt.Rows.Add(new Object[] { i, i.ToString() });
}
return dt;
} protected void Page_Load(object sender, EventArgs e)
{ GridView1.DataSource = this.CreateDataSourceByXianhuiMeng();
GridView1.DataBind();
} protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
String State = DataBinder.Eval(e.Row.DataItem, "State").ToString();
HyperLink h = e.Row.Cells[1].Controls[0] as HyperLink;
if (State.Equals("2"))
{
h.Visible = false;
}
}
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="id" HeaderText="测试的" />
<asp:HyperLinkField DataNavigateUrlFields="Id" DataNavigateUrlFormatString="show.aspx?id={0}"
DataTextField="State" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
<%@ Page Language="C#" EnableViewState="false" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
// 计算数据,完全可以从数据库取得
System.Data.DataTable CreateDataSourceByXianhuiMeng()
{
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("State", typeof(System.String)));
for (int i = 0; i < 8; i++)
{
dt.Rows.Add(new Object[] { i, i.ToString() });
}
return dt;
} protected void Page_Load(object sender, EventArgs e)
{ GridView1.DataSource = this.CreateDataSourceByXianhuiMeng();
GridView1.DataBind();
}</script>
<html>
<head>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="id" HeaderText="测试的" />
<asp:TemplateField>
<ItemTemplate>
<%#Eval("State").ToString() == "2" ? "" : "<a href='show.aspx?id=" + Eval("Id") + "'>" + Eval("State") + "</a>"%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>