2011-07-15 173 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 ..這將肯定工作..煤礦工作了幾秒前..所以認爲這將是很好的分享..