2011-07-15 13 views
5

Dlaczego muszę dwukrotnie kliknąć łącze edycji w formancie gridview, zanim mój wiersz przejdzie w tryb edycji?edycja siatki wymaga dwukrotnego kliknięcia.

<asp:ObjectDataSource ID="ods" runat="server" TypeName="Employee" 
SelectMethod="GetAll" ></asp:ObjectDataSource> 

    <asp:GridView ID="GridView1" runat="server" CssClass="styled" 
    OnRowCommand="gv_RowCommand" DataSourceID="ods" 
    OnSorting="gv_Sorting" > 
    <Columns> 
    ........... 
    </Columns> 
<ItemTemplate> 
<ItemTemplate> 
<div class='actions'> 
<asp:Button ID="btnEdit" runat="server" Text=" Edit " ToolTip="Edit Row" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Id") %>' CausesValidation="False" /> 
<span style="padding-left:10px"></span> 
</div> 
</ItemTemplate> 

    </asp:GridView> 

    protected override void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       this.ods.SelectParameters[0].DefaultValue = ""; 
      } 
     } 

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
if (e.CommandName == CRUID.Edit.ToString()) 
{ 
    this.gv.ShowFooter = false; 
} 
} 
+0

Czy zapełniasz widok siatki przy każdym wczytaniu strony? – FiveTools

+0

Nie, nie jestem i zaktualizowałem moje pytanie z dodatkowym kodem. –

+0

może być coś ze źródłem danych obiektu (zakładam, że to "ods"). bez względu na problem, pomoże ci więcej kodu. – FiveTools

Odpowiedz

0

Spróbuj obsługi zdarzeń RowEditing aby ustawić indeks EditItem:

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gv.EditIndex = e.NewEditIndex 
} 
+0

korekta 'GridViewEditEventArgs' - samo zachowanie –

0

Istnieją pewne błędy w kodzie, jak i zbadane. Popraw swój kod, jak pokazano poniżej:

<asp:ObjectDataSource ID="ods" runat="server" TypeName="Employee" 
SelectMethod="GetAll" ></asp:ObjectDataSource> 

<asp:GridView ID="GridView1" runat="server" CssClass="styled" 
OnRowCommand="gv_RowCommand" DataSourceID="ods" 
OnSorting="gv_Sorting" > 
<Columns> 
........... 
<asp:TemplateField> 
    <ItemTemplate> 
    <div class='actions'> 
     <asp:Button ID="btnEdit" runat="server" Text=" Edit " ToolTip="Edit Row" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Id") %>' CausesValidation="False" /> 
     <span style="padding-left:10px"></span> 
    </div> 
    </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

</asp:GridView> 

protected override void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       this.ods.SelectParameters[0].DefaultValue = ""; 
      } 
     } 

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
if (e.CommandName == "Edit") 
{ 
    this.gv.ShowFooter = false; 
} 
} 

Jeśli na użyciu tego kodu problem nie rozwiąże to nie może być jakiś problem w swoim CssClass który został użyty z GridView jak już sprawdzone kod na moim komputerze przy użyciu ObjectDataSource i działa dobrze przy użyciu edytowanego kodu.

Również chcę wiedzieć, że to, co jest CRUID w CRUID.Edit.ToString() i dlatego stosuje się następującą linię w Page_Load zdarzenia

this.ods.SelectParameters[0].DefaultValue = ""; 

jak nie ma parametr związany z twoja metoda SelectMethod = "GetAll" używana w ObjectDataSource.

Ta odpowiedź może ci pomóc.

0

Chyba istnieje jakiś konflikt z UpdatePanels na swojej stronie ..

Spróbuj removing all your Update Panels and try again .. Będzie ona działać na pewno .. Kopalnia przepracował kilka sekund temu ... tak myślałem, że będzie dobrze się dzielić ...

Powiązane problemy