2016-11-24 3 views
0

の[編集]オプションを削除するにはEmptyDatatemplateとコマンドフィールド</p> <p>を次のように私のGridViewがあるGridViewの

<asp:GridView ID="AGridView" runat="server" AutoGenerateColumns="true" style="table-layout:fixed;" Width="2000px" RowStyle-HorizontalAlign="Left"> 
     <EmptyDataTemplate> 
      &nbsp; 
     </EmptyDataTemplate> 
     <asp:CommandField ShowEditButton="True" ItemStyle-Width="80px" EditText="Edit"> 
     <ItemStyle Font-Bold="true" Font-Size="Small" /> 
      <HeaderStyle CssClass="AAddOn" /> 
     </asp:CommandField> 
    </asp:GridView> 

は、GridViewのは(それが唯一の2行を持っている)今

Name Age Country 
A  10 NNN  Edit 
B  23 NNN  Edit 

私はいけないように見えました最初の行に表示されるように編集ボタンが必要です。私はそれを行うことができます。

ここでは2行だけが表示されます。

Name Age Country 
A  10 NNN   
B  23 NNN  Edit 

ここで、ヘッダーはGridviewヘッダーセルの数であり、私の編集は最後のセルにあります。 は、(私のGridViewの動的に生成された列を生成したが、私は、したがって、ヘッダ・カウントを使用する固定列の値を取ることができないように、わずか2行を有する)

Dim Header As Integer 
For counts = 0 To AGridView.HeaderRow.Cells.Count 
    Header = counts 
    Next 
Dim edit as LinkButton = DirectCast(AGridView.Rows(0).cell(header).FindControl("Edit"),LinkButton) 
    edit.Visible = False 

上記のエラーメッセージがinstance.Indexに設定されていないオブジェクト参照範囲の外です。

次は私がようAGridView_Rowdatabound内部で試してみましたが、全細胞は.Iが偽であることを目に見えるLinkBut​​tonの最初の行だけ編集が必要に消えているに見えるだけで最初の行の[編集]ボタンを必要なもの、私はhere.I行方不明です

If e.Row.RowType = DataControlRowType.DataRow Then 
    e.Row.Cells(Header).Visible = False 
End If 

偽です。質問のコメント欄での議論をもとに

+1

のhttpをご覧ください:// S tackoverflow.com/questions/1461302/conditionally-hide-commandfield-or-buttonfield-in-gridview – davke

+0

こんにちは私は解決策を見たが、私はboundfieldsを持っていない...私のgridviewは2行だけを示しているので、私はgridview rowdataboundでこれを行うことができます。行(1)ボタンが同様にfalseであるべきであるように意味する – havin

+1

私は 'それは重要だと思う。受け入れられた答えのアイデアは、あなたが条件付きでVisibleプロパティを設定できる編集コマンドボタンを作成できるItemTemplateでCommandField(あなたが持っている)を置き換えることです。代わりに、答えの一番下に提案された解決策を試すことができますhttp://stackoverflow.com/a/7188143/4955259。代わりに、CommandFieldイベントハンドラとRowDataBoundイベントハンドラを使用しているようです。 – davke

答えて

1

、あなただけの最初のデータ行の[編集]ボタンを無効にすることを想定し、ボタンが4列であることを、私はこの試みることをお勧め:

追加しますマークアップへOnRowDataBound宣言:

<asp:GridView ID="AGridView" ... OnRowDataBound="AGridView_RowDataBound"> 
    ... 
</asp:GridView> 

は、分離コードファイルにRowDataBoundイベントハンドラを追加します。

Protected Sub AGridView_RowDataBound(sender As Object, e As GridViewRowEventArgs) 
    If e.Row.RowIndex = 1 Then 
     e.Row.Cells(3).Visible = False 
    End If 
End Sub 
+0

ありがとうございます。 – havin

+0

こんにちは私は1つのフォローアップの質問..Whileを作る= false ..特定のセルのための私のGridviewの境界線は名前のために私の編集はまた、特定のセルのための境界線も見えないです.. – havin

+1

私はそれがHTML GridViewCellのVisibleプロパティがfalseに設定されると、セルはまったくレンダリングされません。 'e.Row.Cells(3).Visible = False'の行を' e.Row.Cells(3).Controls.Cast(Of Control)()。First()。Visible = False'に変更してみてください。それが助けてくれたらどう? – davke

関連する問題