asp.net - GridView 编辑按钮需要单击 2 次

标签 asp.net vb.net gridview data-binding edit

当在gridview中按下编辑按钮时,只有点击2次后才会显示编辑模板。 还有一个问题:要编辑的字段的值最初显示在 gridview 中,但不显示在编辑模板中。

ASP代码:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" 
AutoGenerateColumns="False" CellPadding="4" OnRowEditing="EditRow" 
OnRowCancelingEdit="CancelEditRow" DataKeyNames="AREA" DataMember="DefaultView">

  <Columns>
     <asp:BoundField DataField="AREA" HeaderText="AREA" ReadOnly="True" 
                                        SortExpression="AREA" />                                   

      <asp:TemplateField HeaderText="LEADER_USER" SortExpression="LEADER_USER">
                     <ItemTemplate><%#Eval("leader_user")%></ItemTemplate>
                      <EditItemTemplate>
                          <asp:TextBox ID="txtleaderuser" runat="server" Text='<%#Eval("leader_user")%>'/>
                      </EditItemTemplate>
       </asp:TemplateField>

       <asp:TemplateField>                                    
           <ItemTemplate>
                  <asp:ImageButton ID="editButton" runat="server" CommandName="Edit" 
                                                ImageUrl="images/pencil1.png" Text="Edit" ToolTip="Edit" />
            </ItemTemplate>
             <EditItemTemplate>
                   <asp:Button ID="BtnUpdate" runat="server" CommandName="Update" 
                                                Text="Update" />
                   <asp:Button ID="BtnCancel" runat="server" CommandName="Cancel" 
                                                Text="Cancel" />
              </EditItemTemplate>
             </asp:TemplateField>

      </Columns>
    </asp:GridView>

VB代码:

Protected Sub EditRow(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
        GridView1.EditIndex = e.NewEditIndex
        GridView1.DataSource = SqlDataSource1
        'If Not IsPostBack Then
        'GridView1.DataSourceID = SqlDataSource1.ID
        'GridView1.DataBind()
        'End If
 End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        SqlDataSource1.SelectCommand = "SQL"
        SqlDataSource1.ConnectionString = "My conn string"

        If Not IsPostBack Then
            'GridView1.DataSourceID = SqlDataSource1.ID
            GridView1.DataSource = SqlDataSource1
            GridView1.DataBind()
        End If    


    End Sub

最佳答案

我认为您需要调用DataBind来重新绑定(bind)数据源。您已将其注释掉,但看起来您将其放在 IsPostBack block 中,该 block 仅在初始页面加载时执行。

尝试:

Protected Sub EditRow(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
    GridView1.EditIndex = e.NewEditIndex
    GridView1.DataSource = SqlDataSource1
    GridView1.DataBind()        
End Sub

关于asp.net - GridView 编辑按钮需要单击 2 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724395/

相关文章:

c# - ASP.NET 5.0 MVC6 的 Omnisharp sublime 文本错误

vb.net - FileInfo返回错误的值?

.net - 页面按钮的样式不同于选择按钮

c# - DataReader 如何工作?

ASP.NET 表单例份验证超时

c# - Web API 2 路由属性在一个 Controller 中起作用,但在另一个 Controller 中不起作用

c# - WINFORM 或 WPF : How to trigger custom event inside the constructor of the class that emits it

c# - C# 中的 ProductName 和 CompanyName

javascript - 使用 jquery 更改值时,asp.net 文本框更改事件未触发

c# - 如何从数据库在 gridview asp.net 上呈现 html 标签