2011-07-15 23 views
5

¿Por qué tengo que hacer clic dos veces en el enlace de edición, en un control gridview, antes de que mi fila entre en el modo de edición?gridview edit requiere hacer doble clic

<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

¿Está poblando la vista de cuadrícula en cada carga de página? – FiveTools

+0

no, no lo soy y actualicé mi pregunta con más código detrás. –

+0

podría ser algo con su fuente de datos objeto (supongo que es 'ods'). cualquiera que sea el problema, más código ayudaría. – FiveTools

Respuesta

0

Trate controlar el evento RowEditing para establecer el Índice de EditItem:

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

corrección 'GridViewEditEventArgs' - el mismo comportamiento –

0

Hay algunos errores en su código mientras examinaba. Corregir su código como se muestra a continuación:

<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; 
} 
} 

Si en el uso de este código, el problema no se resuelve, entonces puede haber algún problema en su CssClass que utilizaste con su GridView como he comprobado su código en mi máquina utilizando ObjectDataSource y funciona bien usando código editado.

También quiero saber que es lo que CRUID en CRUID.Edit.ToString() y por qué ha utilizado la siguiente línea en Load caso

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

ya que hay ningún parámetro asociado con su método SelectMethod = "GetAll" utilizado en ObjectDataSource.

Deje que esta respuesta ayude.

0

supongo que hay algún conflicto con los UpdatePanels en su página ..

Trate removing all your Update Panels and try again .. Se trabajará con seguridad .. mina trabajaban una hace unos segundos ... así que pensé que sería bueno compartir ...

Cuestiones relacionadas