2013-09-10 3 views
4

При нажатии кнопки редактирования в gridview, шаблон редактирования отображается только после 2 кликов. И еще одна проблема: значение поля для редактирования отображается в gridview изначально, но не в шаблоне редактирования.Кнопка редактирования GridView требует 2 кликов

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 

ответ

9

Я думаю, вам нужно позвонить DataBind пересвязать источника данных. Вы прокомментировали это, но похоже, что вы использовали его в блоке IsPostBack, который будет выполняться только при загрузке начальной страницы.

Try:

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

О Боже, это было так просто, спасибо. обе проблемы решены сразу. – phalanx

+0

@phalanx Рад это слышать! Не могли бы вы отметить это как ответ, если ему удастся решить вашу проблему? – mclark1129

+0

Почему ответ был не установлен? – mclark1129

Смежные вопросы