【问题标题】:when gridView update is fired?何时触发 gridView 更新?
【发布时间】:2011-08-19 13:21:48
【问题描述】:

我问了一个我想解决的问题Gridview is not displayed when using stored procedure in SQLDatasource。根据我的老问题,我不确定何时触发 gridView 更新。我有印象

  • 加载页面时会自动触发 Gridview 更新如果您在 SQLDatasource 中使用 SQL 语句

  • GridView需要使用sqldatasource.databind()函数手动绑定更新数据如果你使用存储过程。

但即便如此,第二种情况也不适合我。我知道这个实现有些错误。任何人都可以指导我抛出这个,当 Gridview 准确更新时,也可能对我原来的问题有所启发?

谢谢!


更新:经过进一步研究,我发现databind() 属性不需要 来更新gridView。需要的是回发。因此,如果您在其中添加一个没有代码的按钮,它将更新 gridView,因为页面已被重新发布并且(可能)文本字段值也已更改。

我仍然没有得到任何结果。我所做的是在gridview的空模板中输入“未找到数据”。所以现在我得到“找不到数据”而不是什么都没有。这确实意味着 SP 已运行但返回 0 结果。

我发现的另一件事是,如果您将文本字段绑定到 SQLDataSource,默认情况下,它会将空文本框的值更改为 NULL。这有点愚蠢,为什么需要 NULL 值?这将导致 0 条记录,因为显然我们不会在数据库中存储空值。 (Null 意味着除了微软之外什么都没有)。因此,要解决此问题,请转到 SQL 数据源中的参数列表并选择参数。单击链接“显示高级属性” 将属性“ConvertEmptyStringToNull”从 true 更改为 false。虽然它还没有解决我的问题(但在其他地方修复了它)。

我在想我在 sqlprocedure 中使用了 4 个参数,其中一个导致了问题?但是在 SQLDatasource 中测试时查询不正常。

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    您是否有理由必须使用 GridView 更新事件?为什么不在 Page_Load 事件期间添加代码来绑定 GridView 呢?您是否至少尝试过缩小错误行为的原因?

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
             SqlDataSource1.DataBind();
        }
    }
    

    【讨论】:

    • 我使用 gridView 作为基于 3 或 4 个值的搜索结果。不必使用它。是的,已经缩小了范围,但仍然存在问题。将更新我的问题。谢谢
    【解决方案2】:

    经过研究,我发现 GridView 在页面加载时会自动更新。在 SQLDataSource 中使用 SQL 语句或存储过程的情况相同。 SDQDatasource.Databind() 也不是必须的,特殊情况下可能需要。

    触发 GridView 更新的是页面加载。如果您创建一个按钮并添加一个单击事件,只需单击该按钮将自动导致 gridview 更新,但 clickevent 会导致页面重新加载。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多