【问题标题】:ASP.NET GridView postback not setting posted controls' valuesASP.NET GridView 回发未设置已发布控件的值
【发布时间】:2010-09-14 00:58:14
【问题描述】:

当添加一些复杂的 EditItemTemplate(一个模板中的多个字段),然后从 RowUpdating 事件解析控件时,用户手动输入的控件没有值。我的猜测是绑定数据时会发生一些事情,但我有一些实例,在代码隐藏中简单地添加和属性到控件开始行为并删除该代码使代码工作。作为一种变通方法,我可以 Request(controlname.UniqueId) 来获取它的值,但这是一个 hack。

编辑 当我像这样访问值时

TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox;

找到了文本框,但.Text不是用户输入的。

【问题讨论】:

    标签: asp.net gridview web-controls


    【解决方案1】:

    将回发数据绑定移至 Page_Init

    【讨论】:

    • 不,那还为时过早 :) 从加载到 PreRender 的任何地方都可以 IIRC。我更喜欢坚持加载。
    • 您是否可能在回发时重新绑定?
    • 来自msdn.microsoft.com/en-us/library/ms178472.aspx 在加载[页面加载]期间,...控件属性被加载[来自]...控件状态。所以,我的理论是 gridview 不知道它的控件存在问题,因为它们还不存在。
    【解决方案2】:

    您是否关闭了 ViewState? 您是否以编程方式在模板中添加了控件?如果是,您是否在正确的阶段创建它们?

    【讨论】:

      【解决方案3】:

      您应该能够使用 GridViewUpdateEventArgs 来检索输入的值,例如:

      TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox;
      

      我以前使用过这种语法,它就像一个魅力。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多