javascript,后台方法,datalist,hiddenfield

minheen 2008-11-26 02:22:56
我想根据客户端浏览器的width,调整datalist的repeatcolumns属性。

前台
    <script language="javascript" type="text/javascript">
var hid=document.getElementById("ctl00_ContentPlaceHolder1_hidBodyWidth");
if(hid)
{
alert("hid exist");
hid.value=window.document.body.scrollWidth;
var n= <%= setDatalistColumn() %> ;
alert(document.getElementById("ctl00_ContentPlaceHolder1_hidBodyWidth").value);
alert(n);
}
</script>


后台
    protected int setDatalistColumn()
{
int column = Convert.ToInt32(hidBodyWidth.Value==""?"800":hidBodyWidth.Value) / 200;
DataList1.RepeatColumns = column;
DataList1.DataBind();
return column;
}


js中alert出来的数字都正确,没问题。
问题是后台调试模式下,得到hidBodyWidth.Value为空字符串。

谁知道是啥原因???
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
minheen 2008-11-26
  • 打赏
  • 举报
回复
那得再postback一次咯?...郁闷
cyqlightrain 2008-11-26
  • 打赏
  • 举报
回复
你的代码和下面的代码运行一个效果.

<script language="javascript" type="text/javascript">
var hid=document.getElementById("ctl00_ContentPlaceHolder1_hidBodyWidth");
if(hid)
{
var tmphidvalue=hid.value;
alert("hid exist");
hid.value=window.document.body.scrollWidth;
var n= tmphidvalue;
alert(document.getElementById("ctl00_ContentPlaceHolder1_hidBodyWidth").value);
alert(n);
}
</script>


因为在页面加载的时候,就已经输出了setDatalistColumn()的值到javascript的n变量中了.
minheen 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dingjian2008 的回复:]
用这个吧Request.Browser.ScreenPixelsWidth
[/Quote]

这个不准确啊。。1280*800,取到的值是640。。。
dingjian2008 2008-11-26
  • 打赏
  • 举报
回复
用这个吧Request.Browser.ScreenPixelsWidth
minheen 2008-11-26
  • 打赏
  • 举报
回复
页面执行顺序,是先执行完所有的后台程序,再执行前台。在前台里面调用后台的方法,var n= <%= setDatalistColumn() %> ;这里执行的是后台已经执行好的结果,所以上一句赋值语句没影响到。

我的理解是这样的。。不知道对不对。。。

62,269

社区成员

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

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

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

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