2011-07-15 55 views
5

なぜ私は行が編集モードに入る前に、gridviewコントロールで編集リンクを2回クリックする必要がありますか?gridview editを2回クリックする必要があります

<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

EditItemインデックスを設定するRowEditingイベントを処理してみてください。

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

を問題が解決しない、このコードを使用して、上の場合は、私はObjectDataSourceのを使用して、私のマシン上でコードをチェックしていると、あなたのGridViewで使用あなたのCssClassでいくつかの問題がある可能性があります編集されたコードを使ってうまく動作します。

また、私は(何がCRUID.Edit.ToString CRUIDであることを知ってほしい) と理由に関連付けられたパラメータが存在しないとあなたは、Page_Loadイベントに

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

を次の行を使用SelectMethod = "GetAll"メソッドがObjectDataSourceで使用されています。

この回答は役に立ちます。

0

私はあなたのページのupdatepanelsといくつかの競合があると思います。..

removing all your Update Panels and try againを試してみてください...それは確かに動作します。..鉱山が働いていました数秒前..そう思ったそれは共有することが良いだろう..

関連する問題