向Gridview添加编辑按钮

时间:2013-01-08 20:16:54

标签: asp.net c#-4.0 gridview

我编写了一个从数据库中检索数据并返回数据表的方法,该方法包含三个列。

此数据表在隐藏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,但问题是我需要在不刷新页面的情况下弹出该模态对话框,并且它不能完全支持脚本。

所以在我的gridview中插入了一个项目模板

        <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被替换为“”

请帮我找错。我认为有一种更好,更简单的方法来实现这一目标。如果是这样,我愿意接受他们。

感谢阅读,

Abijeet。

1 个答案:

答案 0 :(得分:1)

需要考虑的一些事项:

首先,你可以为你的ItemCommand事件发布你的代码,它会渲染模态弹出窗口并执行更新吗?可能是您在编辑后的刷新处理不正确。

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

第三,在GridView中使用asp按钮时,单击时会触发“ItemCommand”事件,这将导致回发。

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

我希望这里有所帮助。