gridview 以编程方式编辑模式

Posted

技术标签:

【中文标题】gridview 以编程方式编辑模式【英文标题】:gridview edit mode programmatically 【发布时间】:2013-04-23 05:28:52 【问题描述】:

我有一个基本的网格视图,我将来自 SQL 存储过程的代码中的数据绑定到它。

<asp:GridView ID="gvCheckResults" runat="server" 
        OnRowDataBound="gvCheckResults_RowDataBound" 
        RowStyle-CssClass="gridViewRow" 
        CssClass="gridView"
        AlternatingRowStyle-CssClass="gridViewAlternatingRow" 
        HeaderStyle-CssClass="gridViewHeader">
    </asp:GridView> 

数据绑定:

gvCheckResults.DataSource = dataContext.GetResults(Name, Address);
gvCheckResults.DataBind();

if (!IsPostBack)

    //Add Edit column.
    CommandField cField = new CommandField();
    cField.EditText = "Edit";
    cField.ShowEditButton = true;
    gvCheckResults.Columns.Insert(0, cField);

如何以编程方式将“编辑”按钮添加到每个结果行? 我知道在 aspx 页面中设置数据源对象时该怎么做,但从未以编程方式完成。

【问题讨论】:

尝试使用 gridview 的 ItemTemplate 并在其中添加 asp.net 按钮,它将出现在所有行中。然后使用 gridview 的 Row_Command 事件处理其事件 【参考方案1】:

这样试试

<asp:TemplateField HeaderText="Edit>
    <ItemTemplate>
        <asp:LinkButton Id="lnkEdit" runat="server" CommandName="Edit" Text="Edit"/>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:LinkButton Id="lnkEdit" runat="server" CommandName="Update" Text="Update"/>
        <asp:LinkButton Id="LinkButton1" runat="server" CommandName="Cancel" Text="Cancel"/>
    </EditItemTemplate>
</asp:TemplateField>

OnRowEditEvent()将gridview编辑索引设置为e.newrowindex,像这样再次绑定。

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

    GridView1.EditIndex = e.NewEditIndex;
    GridView1.DataBind();


protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

    //Write code TO UPDATE YOUR DATABESE THEN WRITE BELOW CODE IN LAST
    // To Find Text of TextBox to get updated value....you get it in string like this.
    //string strName = ((TextBox)grdview1.Rows[e.RowIndex].Cells[YourColumnIndexInWhichTexBoxAppear].Controls[0]).Text;
    GridView1.EditIndex = -1;
    GridView1.DataBind();


protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

    GridView1.EditIndex = -1;
    GridView1.DataBind();

【讨论】:

快到了。一件奇怪的事情是我的前 4-5 列都变成了编辑链接。如何解决?我希望 Edit 列成为 gridview 中的第一个。 这是 OnRowEditing 的代码 -> gvCheckResults.EditIndex = e.NewEditIndex; gvCheckResults.DataSource = dataContext.GetResults(Name,Address); gvCheckResults.DataBind(); 当你点击编辑按钮时会发生什么......显示 gridview aspx 代码 该行变为可编辑(标签变成文本框),当点击更新时,The GridView 'gvCheckResults' fired event RowUpdating which wasn't handled. 出现错误,这是有道理的,因为没有更新方法 好的,更新有效,但我必须修复的一件事是编辑链接,它在每次绑定后不断接管我的所有列。请参阅最初的问题以获取更新。

以上是关于gridview 以编程方式编辑模式的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid - 以编程方式将单元格设置为编辑模式

如何以编程方式禁用 C# 控制台应用程序的快速编辑模式?

如何以编程方式更改editButtonItem的状态?

EF模式下 多表关联查询结果作为数据源 gridview无法编辑的问题解决思路

当它处于编辑模式而不是它时,如何控制Gridview的大小?

如何在编辑模式 ASP .Net 中将日期选择器放在 Gridview 中