ASP.NET 前台页面某一属性值在后台CS中定义

eur911 2010-10-19 05:40:23
例:
前台:
DataNavigateUrlFields="号码"
//////////////////////////////////////////////////
变成:

前台:
DataNavigateUrlFields='<%=id%>'

后台:
protected string id = "号码";

说明:DataNavigateUrlFields是Gridview模板中HyperLink的一属性。以上方法试了不行,请高手们帮忙,搞了三天了,没解决,我这样做,主要是因为号码这个值是不固定的,所以得是个变量,但那个值怎么都不会从后台传到前台去使用,谢谢大家了!!!!!!!!
...全文
190 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
一切为了你 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 eur911 的回复:]
你告诉我怎么在后台定义一个值,然后怎么在前台怎么使用吧?
[/Quote]
如果后台写的静态方法;static getColor(int status) {};
<% getColor(..)
%>
eur911 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wuyq11 的回复:]
<a href='a.aspx?id=<%=id%>&b=<%#Eval("id") %>'><%#Eval("title") %></a>
[/Quote]
放进GRIDVIEW模板代码中出错,里面好像不允许这样写
wuyq11 2010-10-19
  • 打赏
  • 举报
回复
<a href='a.aspx?id=<%=id%>&b=<%#Eval("id") %>'><%#Eval("title") %></a>
wuyq11 2010-10-19
  • 打赏
  • 举报
回复
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((HyperLink)e.Row.FindControl("HyperLink1")).NavigateUrl = "";
}
}

eur911 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hooverhuang 的回复:]
引用楼主 eur911 的回复:
例:
前台:
DataNavigateUrlFields="号码"
//////////////////////////////////////////////////
变成:

前台:
DataNavigateUrlFields='<%=id%>'

后台:
protected string id = "号码";

说明:DataNav……
[/Quote]
DataNavigateUrlFields="号码"
这样写没错,但不是我要的效果,因为号码是个变量,我现在只是临时用。但是
前台
DataNavigateUrlFields='<%=id%>'
后台:
protected string id = "号码";
调试没报错,但GRIDVIEW查询不出数据来了,不知道怎么回事,上面的可以,改成下面的就不行了。
jce195447 2010-10-19
  • 打赏
  • 举报
回复
使用QueryString

使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:
◆使用控件创建web表单(form)
◆创建可以返回表单的按钮和链接按钮
◆在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
◆在保存的URL里添加QueryString参数
◆使用Response.Redirect重定向到上面保存的URL

下面的代码片断演示了如何实现这个方法:

源页面代码:

以下为引用的内容:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}

目标页面代码:

以下为引用的内容:

private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];

使用Session变量

使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:

◆在页面里添加必要的控件
◆创建可以返回表单的按钮和链接按钮
◆在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
◆使用Response.Redirect方法重定向到另一个页面
◆在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它

下面的代码片断演示了如何实现这个方法:

源页面代码:

以下为引用的内容:
private void Button1_Click
(object sender, System.EventArgs e)
{
file://textbox1 and textbox2 are webform
file://controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.aspx");
}

目标页面代码:

以下为引用的内容:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}

使用Server.Transfer
这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:
◆在页面里添加必要的控件
◆创建返回值的Get属性过程
◆创建可以返回表单的按钮和链接按钮
◆在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
◆在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了

以下代码综合实现上述步骤过程的代码:

源页面代码:

把以下的代码添加到页面中

以下为引用的内容:
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}

然后调用Server.Transfer方法

以下为引用的内容:
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}

目标页面代码:

以下为引用的内容:
private void Page_Load
(object sender, System.EventArgs e)
{
file://create instance of source web form
WebForm1 wf1;
file://get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

总结

本文讲述了使用不同的方法实现了ASP.NET页面间值传递,这三种方法是:QueryString,Session和Server.Transfer,我们应该反覆体会几种方法的异同。我希望本文能给你有用的助益,直到在你的代码中运用自如!
eur911 2010-10-19
  • 打赏
  • 举报
回复
你告诉我怎么在后台定义一个值,然后怎么在前台怎么使用吧?
jce195447 2010-10-19
  • 打赏
  • 举报
回复
在后台用 httprequest.querystring("号码")
HooverHuang 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 eur911 的回复:]
例:
前台:
DataNavigateUrlFields="号码"
//////////////////////////////////////////////////
变成:

前台:
DataNavigateUrlFields='<%=id%>'

后台:
protected string id = "号码";

说明:DataNavigateUrlFields是Gri……
[/Quote]

这样应该可以吧,报什么错?
孟子E章 2010-10-19
  • 打赏
  • 举报
回复
这种功能这样就可以了
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href='xx.aspx?id=<%=id%>&xxxxx=<%#Eval("id") %>'>
<%#Eval("Name") %></a></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
孟子E章 2010-10-19
  • 打赏
  • 举报
回复


例子
<%@ Page Language="C#" %>

<script runat="server">

protected System.Data.DataTable CreateMengxianhuiDataSource()
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("Count", typeof(System.Double)));
dt.Columns.Add(new System.Data.DataColumn("CreateDate", typeof(System.DateTime)));

System.Random rd = new System.Random();
for (int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = i + i;
dr[1] = "孟子E章" + i.ToString();
dr[2] = System.Math.Ceiling(rd.NextDouble() * 1000);
dr[3] = DateTime.Now.AddDays(rd.Next(100) - rd.Next(100));
dt.Rows.Add(dr);
}
return dt;
}

protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = CreateMengxianhuiDataSource();
GridView1.DataBind();
}
int id = 100;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink d = e.Row.Cells[0].Controls[0] as HyperLink;
d.NavigateUrl+="&newID=" + id;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Height="115px"
OnRowDataBound="GridView1_RowDataBound" Width="76px">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="id" DataTextField="name" HeaderText="姓名"
DataNavigateUrlFormatString="x.aspx?id={0}" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
eur911 2010-10-19
  • 打赏
  • 举报
回复
<asp:HyperLinkField
DataNavigateUrlFormatString="~/Common_Mar/Add_Data.aspx?id={0}" HeaderText="修改"
Text="修改" DataNavigateUrlFields="号码">

这个有啊,知道的请详解,3Q!!!!!
孟子E章 2010-10-19
  • 打赏
  • 举报
回复
使用DataNavigateUrlFormatString属性啊

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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