【问题标题】:Custom edit/delete button Gridview自定义编辑/删除按钮 Gridview
【发布时间】:2009-08-20 15:53:38
【问题描述】:

我正在使用 C#.net

我想向我的 GridView1 添加自定义编辑/删除按钮(每行一个编辑/删除按钮)。

但是我希望按钮访问另一个视图(同一表单中的 editView/deleteView),而不是编辑“内联”等。

编辑按钮似乎工作正常。以下是我手动创建它的方式:

Right clicked on GridView1
Clicked on ‘Add New Column’
Field Type: ButtonField
Header Text: Edit
Button Type: Button
Command Name: Edit
Text: Edit

在 GridView1 的“事件”部分(位于属性下)中,我双击了 RowEditing,然后创建了一个我可以在后面的代码中访问的事件。

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        // Access _viewAdd

        _multiView1.ActiveViewIndex = 1;
   }    

删除按钮应该访问 deleteView(确认页面),而不是自动删除一行。我想创建一个在用户选择删除按钮时触发的自定义方法。

【问题讨论】:

    标签: c# .net gridview


    【解决方案1】:

    我最终使用了一个中继器并将编辑/删除按钮修改到每行的末尾。这些按钮不仅包含 OnClick_Event 信息,还包含与该行关联的 ID。

          <asp:Repeater ID="Repeater" runat="server" DataSourceID="*****">
            <HeaderTemplate>          
              <table cellpadding="3" cellspacing="3">
                <tr>
                  <th style="text-align:left">Name</th>
                  <th>&nbsp;</th>
                  <th>&nbsp;</th>
                </tr>            
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                  <td style="text-align:left"><%#Eval("forename")%>&nbsp;<%#Eval("surname")%></td>
                  <td style="text-align:left"><asp:Button ID="edit" OnCommand="edit_Click" CommandArgument='<%#Eval("id")%>' runat="server" Text="Edit" CssClass="standardButton" /></td>
                  <td style="text-align:left"><asp:Button ID="delete" OnCommand="delete_Click" CommandArgument='<%#Eval("id")%>' runat="server" Text="Delete" CssClass="standardButton" /></td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
              </table>
            </FooterTemplate>
          </asp:Repeater>
    

    我希望这对其他人有所帮助。

    【讨论】:

      【解决方案2】:

      您也可以处理RowDeleting 事件。两个事件参数都有一个Cancel 属性,您可以将其设置为true 以防止数据被修改。

      【讨论】:

      • 我添加了一个新的“删除”按钮。 并在后面的代码中添加了 e.Canel 属性,但是它似乎不起作用,它需要转到另一个视图但它看起来只是在刷新第一个视图。 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { // 确保不删除 gridview 中的任何内容 e.Cancel = true; // 访问 _viewAdd _multiView1.ActiveViewIndex = 0; }
      • 您的 RowDeleting 处理程序是否已向事件注册?处理程序中的断点是否被命中?如果是这样,如果您继续单步执行会发生什么?
      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多