【问题标题】:ASP.NET GridView - How to Perform Custom Update Statements?ASP.NET GridView - 如何执行自定义更新语句?
【发布时间】:2010-09-21 09:21:08
【问题描述】:

我有一个显示社区列表的 ASP.NET GridView。

我希望用户(管理员)能够编辑社区名称。

现在,数据库相当复杂,因此,我不能简单地为 GridView 提供 UpdateCommand / SqlDataSource。

我手动绑定数据(在第一次加载时,以及在 PageIndexChanging 事件中)。

绑定/列出分页数据工作正常。

但是,我在尝试更新数据时遇到了麻烦。

用户单击“编辑”按钮,显示社区名称的文本框,我更改文本,单击“更新”,但未触发 RowUpdating 事件。

我基本上想获取已编辑的行,并使用 LINQ 执行自定义更新。

这对于 GridView 是不可能的吗?如果不是,我的替代方案是什么?带有链接按钮的中继器和可以换入/换出标签的隐藏文本框?

这是我的 GridView 标记:

<asp:GridView ID="NeighborhoodsGrid" 
              AllowPaging="true"
              PageSize="10"
              AutoGenerateColumns="false"
              EnableViewState="false"
              OnPageIndexChanging="NeighborhoodsGridPageIndexChanging"
              OnRowDataBound="NeighborhoodsGridRowDataBound"
              OnRowEditing="NeighborhoodsGridRowEditing" 
              OnRowCancelingEdit="NeighborhoodsGridRowCancellingEdit" 
              OnRowUpdating="NeighborhoodsGridRowUpdating" 
              AutoGenerateEditButton="true"
              runat="server">

还有代码隐藏:

protected void NeighborhoodsGridRowUpdating(object sender, GridViewUpdateEventArgs e)
{
   GridViewRow updatedRow = NeighborhoodsGrid.Rows[e.RowIndex]; // not firing. =(
}

我还将 GridView 包装在 UpdatePanel 中,如果这有什么不同的话(不认为应该如此)。

有什么想法或替代建议吗?

【问题讨论】:

    标签: c# .net asp.net gridview


    【解决方案1】:

    没关系,伙计们,我的坏。

    我有 EnableViewState="false"。

    我不知道为什么这会影响事件的触发,也不知道其他事件是如何工作的。

    无论如何,我将其设置为 true 并触发事件。

    我总是尝试将 ViewState 设置为 false,然后根据需要将其打开。

    这次付出了代价。 =)

    总之问题解决了。

    【讨论】:

    • =) 是的,这是一个 ASP.NET Web 窗体应用程序的管理页面,所以我“屈服于”拖放地狱。 =) 我们正在重写网站 - MVC FTW。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多