私はもう試した -
DataGridView1.DataSource=Nothing
そして
DataGridView1.DataSource=Nothing
DataGridView1.Refresh()
そして
DataGridView1.RefreshEdit()
どれも機能しません。
実行時にDataGridViewのDataSourceを設定するメソッドを作成しました。しかし、それを実行するたびに、新しい値でデータを複製し、DGVの以前のコンテンツに追加します。コンテンツをクリアしてから値を追加します。それは可能ですか?
DataGridViewが任意のデータソースにバインドされている場合、DataGridViewのDataSource
プロパティをNothing
に設定する必要があります。
DataGridViewがデータソースにバインドされていない場合、このコードはトリックを実行します。
DataGridView.Rows.Clear()
バインドされていない場合は、次のことに注意してください。
DataGridView.Rows.Clear()
columnsコレクションをそのまま残します。
DataGridView.Columns.Clear()
..すべての列と行を削除します。バインドされていないDGVを使用していて、次に列の変更を使用する場合、行のクリアは適切ではない可能性があります。ライブラリコードの場合、列を追加する前にすべての列をクリアします。
おそらくこれを使用します...
DataGridView1.Rows.Clear()
行をクリアしてから再バインドします。
このような簡単な方法に従ってください
ta
がDataTable
であると仮定します
ta.clear()
DataGridView1.DataSource = ta
DataGridView1.DataSource = Nothing
データソースをnullに設定すると列が削除されることがわかりました。これは私のために働くものです:
c#:
((DataTable)myDataGrid.DataSource).Rows.Clear();
VB:
Call CType(myDataGrid.DataSource, DataTable).Rows.Clear()
DataGridView
に対しては何もせず、データソースをクリアするだけです。 myDataset.clear()
メソッドをクリアしてみたところ、動作しました。
新しい結果を検索しているときにdatagridviewの古いレコードを削除するには、button_clickイベントで次のコードを記述します。
me.DataGridview1.DataSource.clear()
このコードは、datagridviewの古いレコードを削除するのに役立ちます。
Datagridviewを(nullではなく)空のコレクションにバインドすることはできません。それはトリックですか?
DataGridViewもDataSourceにバインドされており、myDataGridView.Columns.Clear()
は正常に機能しましたが、myDataGridView.Rows.Clear()
は機能しませんでした。試してみた人の参考までに.Rows
。
Clear datagridviewコマンドを実装したい場所でこのコードを使用します
datagridview1.datasource= nothing
datagridview1.datasource= ds
dt.clear() 'Dt as new DATATABLE
ds.clear() 'Ds as new Dataset
このコードは、datagridviewをクリアし、データベースからデータを取り込むときにデータの複製を停止します。
Gridviewのコンテンツのクリアについても同じ問題がありました。使用したデータソースは列のないデータテーブルであり、プログラムで列と行をデータテーブルに追加しました。次に、datagridviewにバインドします。 gridView.Rows.Clear()
、gridView.DataSource = Nothing
などのgridviewに関連するコードを試しました
しかし、私にはうまくいきませんでした。その後、毎回datagridviewにバインドする前に、datatableに関連する以下のコードを試してください。
dtStore.Rows.Clear()
dtStore.Columns.Clear()
gridView.DataSource = dtStore
DataGridViewでのレプリケーションはなく、正常に動作しています
同じ問題がありました:RadioButtonList1から2番目のテーブルを選択したときに、GridView1を1つのSQLテーブル[dictonary]または別の[meny]にプログラムでバインドしていましたが、エラー(System.Web.HttpException:Field or propertyタイトル[以前に選択したテーブルの最初の列のタイトル]が選択したデータソースに見つかりませんでした。つまり、最初に選択したテーブルの列が見つからなかったと言います。私がする必要があるのは、挿入することだけでした:
GridView1.Columns.Clear()
テーブルの列を追加する前に。完全なコードは次のとおりです。
Dim connectionString As String = "your-string-details"
Dim connection As New SqlConnection(connectionString)
次に、最初のサブが来ます:
Private Sub BindOrders()
connection.Open()
Dim sqlCommand As String = "SELECT * FROM [dictionary]"
Dim dataAdapter As New SqlDataAdapter(sqlCommand, connection)
Dim dt As New DataTable()
dataAdapter.Fill(dt)
GridView1.Columns.Clear() ' clear columns before adding new ones
If GridView1.Columns.Count <= 0 Then
Dim Field As New BoundField()
Field.DataField = "id"
Field.HeaderText = "id"
GridView1.Columns.Add(Field)
Field = New BoundField()
Field.DataField = "strArHundreds"
Field.HeaderText = "strArHundreds"
GridView1.Columns.Add(Field)
Field = New BoundField()
Field.DataField = "strArTens"
Field.HeaderText = "strArTens"
GridView1.Columns.Add(Field)
Field = New BoundField()
Field.DataField = "strArSingles"
Field.HeaderText = "strArSingles"
GridView1.Columns.Add(Field)
End If
GridView1.DataSource = dt
GridView1.DataBind()
connection.Close()
End Sub
次に、2番目のサブが来ます。
Private Sub BindDocuments()
connection.Open()
Dim sqlCommand As String = "SELECT * FROM [meny]"
Dim dataAdapter As New SqlDataAdapter(sqlCommand, connection)
Dim dt As New DataTable()
dataAdapter.Fill(dt)
GridView1.Columns.Clear() ' clear columns before adding new ones
If GridView1.Columns.Count <= 0 Then
Dim Field As New BoundField
Field = New BoundField
Field.DataField = "id"
Field.HeaderText = "id"
GridView1.Columns.Add(Field)
Field = New BoundField
Field.DataField = "nazev"
Field.HeaderText = "nazev"
GridView1.Columns.Add(Field)
End If
GridView1.DataSource = dt
GridView1.DataBind()
connection.Close()
End Sub
最後に、RadioButtonが登場します。
Protected Sub RadioButtonList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RadioButtonList1.SelectedIndexChanged
Dim index As Integer
index = RadioButtonList1.SelectedIndex
Select Case index
Case 0
BindOrders()
Exit Select
Case 1
BindDocuments()
Exit Select
End Select
End Sub
完了のために、関連するaspx.fileのGridView1およびRadioButtonList1のコードを以下に示します。
<asp:RadioButtonList ID="RadioButtonList1"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged">
<asp:ListItem>Obraty</asp:ListItem>
<asp:ListItem>Dokumenty</asp:ListItem>
</asp:RadioButtonList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
</asp:GridView>
これは現在すべてうまく機能しています。
これを書いてください
DataGridView1.DataSource = ""
データグリッドがデータテーブルにバインドされている場合、データセットからテーブルを削除する必要があります。 Gridviewは自動的にクリアされます。他に方法はありません。
[YourDatasetName].Tables.Clear()
SQLクエリからdatagridviewに情報を入力する場合、リロードする前に最初にdatagridviewをクリアできます。
DbDataSetをNew DataTableとして定義した場合、明確にすることができます。 dbDataSetは、パブリッククラスフォーム内のフォームの先頭にある必要があります
Dim dbDataset AS New DataTable
あなたのコード内にプライベートサブ、場所
dbDataSet.Clear()
GridView
(名前がgvArchive
とする)が任意のDataSource
にバインドされている場合、次のようにクリアされます。
gvArchive.DataSource = Nothing
gvArchive.DataBind()
_Dim DS As New DataSet
_
DS.Clear()
-DATASET clearはDataGridView.Rows.Clear()
よりもうまく機能します:
_Public Sub doQuery(sql As String)
Try
DS.Clear() '<-- here
' - CONNECT -
DBCon.Open()
' Cmd gets SQL Query
Cmd = New OleDbCommand(sql, DBCon)
DA = New OleDbDataAdapter(Cmd)
DA.Fill(DS)
' - DISCONNECT -
DBCon.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
_
あなたが犯している間違いは、データの保存にデータセットオブジェクトを使用しているように見えることです。次のコードを使用してデータセットにデータを配置するたびに、データセットに既にあるデータにデータを追加します。
myDataAdapter.Fill(myDataSet)
次のコードでデータセットのテーブルをプログラムのDataGridViewオブジェクトに割り当てると、データセットとデータセットテーブルに既に存在するデータをクリアしていないため、重複した結果が得られます。
myDataGridView.DataSource = myDataSet.Tables(0)
データの複製を回避するには、データセットオブジェクトでclearメソッドを呼び出す必要があります。
myDataSet.clear()
次に、データセット内のテーブルをDataGridViewオブジェクトに割り当てます。コードはこのようなものです。
myDataSet.clear()
myDataAdapter.Fill(myDataSet)
myDataGridView.DataSource = myDataSet.Tables(0)
このコードを試すことができます:
' clear previous data
DataGridView2.DataSource = Nothing
DataGridView2.DataMember = Nothing
DataGridView2.Refresh()
Try
connection.Open()
adapter1 = New SqlDataAdapter(sql, connection)
' clear data already in the dataset
ds1.Clear()
adapter1.Fill(ds1)
DataGridView2.DataSource = ds1.Tables(0)
connection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
1)Clear.Insideという名前のボタンを作成し、次のコードを挿入しますdatagridviewer.DataSource = nothing
2)検索ボタンで、次のステートメントからコードを開始します
datagridviewer.DataSource = DataSet.table
Nb:テーブルの代わりに、テーブルの実名を置きますex:datagridviewer.DataSource = DataSet.client
DataGridViewが任意のデータソースにバインドされている場合、
DataGridView1.DataSource = Nothing
DataGridView1.DataBind()
データバインディングを保持し、DataGridViewを一時的にクリアするだけのユーザーシナリオがあります。たとえば、ユーザーがマップ上の施設をクリックして、編集する属性を表示するようにします。彼は初めてクリックするか、既にクリックして編集しています。ユーザーが[ファシリティの選択]ボタンをクリックすると、前のファシリティのデータのDataGridViewをクリアします(最初の選択の場合はエラーをスローしません)。このシナリオでは、DataGridViewを埋める生成コードを調整することにより、クリーンなDataGridViewを実現できます。生成されたコードが次のようになっているとします:
Try
Me.Fh_maintTableAdapter.FillByHydrantNumber(Me.Fh2010DataSet.fh_maint, hydrantNum)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
給水栓番号に基づいてDataGridViewを埋めています。このコードをDataGridViewをクリアするポイントにコピーし、データを取得しないことがわかっている「hydrantNum」の値に置き換えます。グリッドがクリアされます。そして、ユーザーが実際に施設(この場合は給水栓)を選択すると、DataGridViewを適切に埋めるためのバインディングが行われます。
このコードはWindowsフォームで動作しますが、
Public Class Form1
Private dataStuff As List(Of String)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.DataSource = Nothing
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dataStuff = New List(Of String)
dataStuff.Add("qwerty")
dataStuff.Add("another")
dataStuff.Add("...and another")
DataGridView1.DataSource = dataStuff
End Sub
End Class