【问题标题】:Adding an edit button to Gridview向 Gridview 添加编辑按钮
【发布时间】:2013-01-08 20:16:54
【问题描述】:

我编写了一个从数据库中检索数据并返回由 列组成的数据表的方法。

隐藏 ID 字段之后,我将这个数据表绑定到一个 gridview 控件。

        DataTable dt = _qbObj.getAllTags();
        dvTags.DataSource = dt;

        BoundField bfName = new BoundField();
        bfName.DataField = dt.Columns["Name"].ToString();
        bfName.HeaderText = "Name";

        BoundField bfId = new BoundField();
        bfId.DataField = dt.Columns["ID"].ToString();
        bfId.Visible = false;

        BoundField bfDesc = new BoundField();
        bfDesc.DataField = dt.Columns["Description"].ToString();
        bfDesc.HeaderText = "Description";            

        dvTags.Columns.Add(bfId);
        dvTags.Columns.Add(bfName);
        dvTags.Columns.Add(bfDesc);
        dvTags.DataBind();

对于这个 gridview 控件,我想添加一个编辑按钮,它应该会弹出一个 jquery 模态对话框,我可以在其中输入更新的详细信息。

我意识到我可以使用 a ,但问题是我需要在不刷新页面的情况下弹出该模式对话框,并且不完全支持脚本。

所以我在我的网格视图中插入了一个项目模板

        <asp:GridView ID="dvTags" runat="server" CssClass="labs-grid-view" 
            AutoGenerateColumns="False" >
            <Columns>   
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="btnEdit" runat="server" Text="Edit" OnClick="dvTagEdit" CommandName="UpdateRecord"
                            CommandArgument='<%# Eval("ID") %>' />
                    </ItemTemplate>
                </asp:TemplateField>                                 
            </Columns>
        </asp:GridView>

现在,在我完成编辑后,gridview 不会自动更新,因此我有一个专用的刷新网格按钮,它使用以下代码删除现有的“动态插入的列”:-

        int noOfRows = dvTags.Columns.Count;
        if (noOfRows > 1)
        {
            dvTags.Columns.RemoveAt(noOfRows - 1);
            dvTags.Columns.RemoveAt(noOfRows - 2);
            dvTags.Columns.RemoveAt(noOfRows - 3);
            // THERE ARE A TOTAL OF **THREE** COLUMNS
        }  

但问题是,在刷新页面几次后,我在 ItemTemplate 中的按钮消失了,并且在 html 中被替换为“ ”

请帮我找出错误。我在想有一种更好更简单的方法来实现这一点。如果是这样,我愿意接受他们。

感谢阅读,

阿比吉特。

【问题讨论】:

    标签: asp.net c#-4.0 gridview


    【解决方案1】:

    需要考虑的几点:

    首先,您能否为您的 ItemCommand 事件发布您的代码,该事件正在呈现模式弹出窗口并执行更新?可能是您的编辑后刷新处理不正确。

    其次,考虑在 Gridview 中使用 RowDataBound 事件,而不是在 GridView 上进行数据绑定“内联”。您可以检测正在生成哪一行(页眉、数据、页脚),并且可以在其中正确创建编辑按钮。更好的是,您可以在此方法中访问您的按钮,只需将 CommandArgument 设置为您的 Id。

    第三,在你的GridView中使用asp按钮时,点击时会触发"ItemCommand"事件,会导致回发。

    我建议在您的模板列中添加一个简单的链接,或者可以用来触发 jQuery 模态的东西,并且您可以为您的项目设置一个静态命名约定,以便正确检索要放入您的模态的数据弹出编辑。然后从那里您应该能够正常处理您的更新。

    我希望这里有帮助。

    【讨论】:

      猜你喜欢
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      相关资源
      最近更新 更多