2011-07-15 63 views
5

为什么我需要点击编辑链接两次,在gridview控件中,在我的行进入编辑模式之前?gridview编辑需要点击两次

<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

你填充gridview每页加载? – FiveTools

+0

不,我不是,我用更多的代码更新了我的问题。 –

+0

可能是你的对象数据源的东西(我假设是'ods')。不管什么问题,更多的代码会有所帮助。 – FiveTools

回答

0

尝试处理RowEditing事件设置EditItem指数:

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

更正'GridViewEditEventArgs' - 相同的行为 –

0

有在代码中的一些错误,因为我检查。更正您的代码如下所示:

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

如果使用此代码的问题不那么解决有可能会在你的CssClass,你与你的GridView使用的一些问题,因为我已经经过使用的ObjectDataSource我的机器上的代码并且它使用编辑的代码很有效。

此外,我想知道是什么CRUIDCRUID.Edit.ToString() ,为什么你用在Page_Load事件

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

以下行,因为没有参数关联ObjectDataSource中使用的SelectMethod =“GetAll”方法。

愿这个答案帮助你。

0

我想有一个与你的页面上的UpdatePanel的一些冲突..

尝试removing all your Update Panels and try again ..这将肯定工作..煤矿工作了几秒前..所以认为这将是很好的分享..