【问题标题】:postback in asp doesn't refresh control valueasp中的回发不刷新控件值
【发布时间】:2011-11-12 08:19:14
【问题描述】:

我有一个包含转发器的 div(runat=server),这个转发器获取的是数据表中的值

当数据表为空时,我在 asp .net 函数中执行这行代码

divname.innerHTML="<img src="...>"

在这个页面上还有一个 asp:button 用值填充数据表。 按下按钮时,上面的行不执行,页面offcourse正在回发,但div内容没有变回原来的值(中继器)。

我必须在回发中做什么才能强制 div 获取他的原始值?

这是代码示例:

     sub page_load(..
if ispostback=false then
         run_div()
end if
        end sub

        sub run_div()

    if datatable.Rows.Count=0 then
    divname.innerHTML="<img src="...>"


    end if
    end sub


sub filldata(....

fill datatable
 repeater.datasource=...
    repeater.databind
run_div()

end sub



    html look like this

    <div runat=servver id=divname><asp:repeater>.....
    <asp:button onclick="filldata">

感谢您的帮助

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    假设名为 datatable 的变量是一个 System.Data.DataTable,请记住它仅在页面生命周期的单次运行的上下文中存在并且具有数据。如果页面被重新生成(无论是通过回发还是页面的初始加载),DataTable 在加载之前都是空的。

    但是,Repeater 对象存储在 ViewState 中。如果前一次加载有行,IT 将在回发中获得值。

    您应该查看 Repteater.Items.Count,而不是查看表中的行数。

    If repeater.Items.Count = 0 Then
       divname.innerHTML="<img src="...>"    
    Else
       ...
    End If
    

    【讨论】:

    • 不,你说得对,我忘了说,页面加载中有一个回发检查
    • 好的。我认为您可以忽略除第三点之外的所有内容。我再次重新阅读了您的代码示例,前两个确实不适用,所以我将删除它们。我认为第三点是正确的问题。
    • 编辑删除不相关的点并澄清我认为的相关点。
    • 您的建议非常正确,但这只是示例代码,这样做是有原因的,这并不一定意味着代码不正确(只是 page_load 中的回发检查),但是为什么 div 内容在回发后没有更改为原始值?
    • 你的意思我很清楚,按钮事件发生在 page_load 之后,所以当页面加载时数据表是空的,但你的建议不适合这个问题
    猜你喜欢
    • 2012-07-02
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多