关于保存html控件状态和在服务器端响应特殊事件的两个小例子

hgknight 2002-08-15 05:59:41
加精
今天意外获得一天假,gf又不在身边,在家很无聊,看论坛上有些问题问得比较多,就做了两个小例子
为了方便书写,我没有采用CodeBehind,也用vbscript代替了javascript,复制即可运行:)
第一个是关于保存html控件状态的例子。
一般html控件刷新后就会清空状态,不过可以用hidden变量来上传服务器端保存
下面这个例子是如何保存一个html的TextBox控件状态

<script language=C# runat=server>
public string temp="";

private void Page_Load(object sender, System.EventArgs e)
{
if(Page.IsPostBack)
temp=Request.Form["h1"].ToString();
}

private void Button1_Click(object sender, System.EventArgs e)
{
Response.Write("提交后保持住html控件的状态");
}
</script>
<HTML>
<HEAD>
</HEAD>
<body>
<form id="WebForm3" method="post" runat="server">
<INPUT type="text" name="t1"><br>
<asp:Button id="Button1" runat="server" Text="Button" OnClick="Button1_Click"></asp:Button><br>
<input type="hidden" name="h1">
</form>
<script language="vbscript">
option explicit
WebForm3.t1.value="<%=temp%>"
sub t1_onchange()
WebForm3.h1.value=WebForm3.t1.value
end sub
</script>
</body>
</HTML>
...全文
236 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
byshaw 2002-08-19
  • 打赏
  • 举报
回复
天下真是无奇不有
一种米养百种人啊
不过我觉得那个客户挺有创意
yshawxp 2002-08-19
  • 打赏
  • 举报
回复
gz
freekany2002 2002-08-19
  • 打赏
  • 举报
回复
关于重用问题,欢迎加入讨论
http://www.csdn.net/expert/topic/951/951819.xml?temp=.8591577
hgknight 2002-08-17
  • 打赏
  • 举报
回复
我也是当初被逼的,一个ListBox,我已经给了提交按钮,客户还非要要求双击也可以去读取数据库
mmkk 2002-08-17
  • 打赏
  • 举报
回复
第二个有点意思,但是不知道怎么会有双击ListBox Item的需求?
第一个完全就是类似Asp的老方法了...
P.S: hgknight()可真是一个好人,嘿嘿-_-
page1980 2002-08-17
  • 打赏
  • 举报
回复
不错,谢谢。
spgoal 2002-08-16
  • 打赏
  • 举报
回复
调试程序二,也完成了预期的效果
多谢hgknight(江雨.net) 提供的例子
这两个例子都是综合客户端和服务器端的事件和控件,至少对我来说,学到了一些新的编程思路
spgoal 2002-08-16
  • 打赏
  • 举报
回复
调试程序一,基本达到要求,但有些不明白,为什么不用viewstate?
RareRen 2002-08-16
  • 打赏
  • 举报
回复
不错不错!谢谢hgknight(江雨.net) 兄!收藏
hgknight 2002-08-16
  • 打赏
  • 举报
回复
To spgoal(小goal)
其实ViewState也是一样的原理,这是MS文章里的原话:
ViewState 没有什么神秘之处,它只是利用了一个老的 Web 编程技巧:在一个隐藏的窗体字段中来回传递状态,并将它直接应用于页面处理框架中。但效果却非常好 - 在基于 Web 的窗体中只需编写并维护很少的代码。
legend-never-die 2002-08-16
  • 打赏
  • 举报
回复
嗯,不错,如果给分就更好了,:-)
lixigang 2002-08-16
  • 打赏
  • 举报
回复
也是一种方法
spgoal 2002-08-16
  • 打赏
  • 举报
回复
恩,不过自己用客户端的hidden感觉自由度大点
hgknight 2002-08-15
  • 打赏
  • 举报
回复
还没试过,明天上公司再看看
baitianhai 2002-08-15
  • 打赏
  • 举报
回复
问一个问题,hidden 加上 runat=server后,不用Form可以取得值吗?
baitianhai 2002-08-15
  • 打赏
  • 举报
回复
不错不错,收藏了
hgknight 2002-08-15
  • 打赏
  • 举报
回复
第二个例子是如何在服务器端响应Web控件ListBox的双击事件
主要是用vbscript捕捉事件,通过hidden变量让服务器端响应相应事件
扩展一下,onmousedown,onmousemove等事件都可以这样实现
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
if(Page.IsPostBack)
{
if(Request.Form["Isdbclick"].ToString()=="true")
ListBox_dbclick();
}
}
void ListBox_dbclick()
{
Label1.Text="你双击了"+ListBox1.SelectedItem.Text;
}
</script>
<HTML>
<HEAD>
</HEAD>
<body>
<form id="WebForm4" method="post" runat="server">
在服务器端响应双击事件<br>
<asp:ListBox id="ListBox1" runat="server" Height="169px" Width="97px">
<asp:ListItem Value="a">a</asp:ListItem>
<asp:ListItem Value="b">b</asp:ListItem>
<asp:ListItem Value="c">c</asp:ListItem>
<asp:ListItem Value="d">d</asp:ListItem>
<asp:ListItem Value="e">e</asp:ListItem>
<asp:ListItem Value="f">f</asp:ListItem>
<asp:ListItem Value="g">g</asp:ListItem>
</asp:ListBox><br>
<asp:Label id="Label1" runat="server"></asp:Label><br>
<input type="hidden" name="Isdbclick" value="false">
</form>
<script language="vbscript">
option explicit

sub ListBox1_ondblclick()
WebForm4.Isdbclick.value="true"
WebForm4.submit()
end sub
</script>
</body>
</HTML>

62,074

社区成员

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

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

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

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