Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Determining the row position in a dataset
Message
De
25/06/2002 17:19:39
 
Information générale
Forum:
ASP.NET
Catégorie:
ADO.NET
Divers
Thread ID:
00667651
Message ID:
00672205
Vues:
11
John,

>Assuming that you are viewing the DataSet via a DataGrid on a Web form, call DataGrid.SelectedIndex

OK, thanks ... that makes sense, although I haven't tried this yet (DataGrid or otherwise) ... it was more of a hypothetical question, since Cathi seemed to imply the use of DataViews were needed.

~~Bonnie


>Assuming that you are viewing the DataSet via a DataGrid on a Web form, call DataGrid.SelectedIndex
>
>>Hi Cathi,
>>
>>Just wondering how this would be handled if you weren't using DataViews, just DataSets (we use typed DataSets). I haven't gotten to the point of messing around with this yet, but will have to soon.
>>
>>~~Bonnie
>>
>>
>>>In Visual Studio .NET, data sources do not maintain a notion of a control's
>>>position within the data contained. In contrast, other data-access
>>>technologies, such as ADO, typically maintain a current record and provide
>>>ways for you to navigate to other records. Some people may be surprised to
>>>see that the data no longer "knows" where the current record is itself, due
>>>to the absence of a cursor. Now, without cursors, you can have multiple
>>>positions set on the same store of data.
>>>
>>>You should use the Find method of the DataView. This
>>>method returns the item number for that row. Then, just assign it to the
>>>position property of the CurrencyManager. You can get the DataView by
>>>casting the List property of the CurrencyManager. The Find method searches
>>>the sorted column(s), so you would have to sort by the key field.
>>>
>>>In this sample, you use the DataView.Find method to retrieve the record
>>>position
>>>and update the CurrencyManager object. This synchronizes the row pointer in
>>>the
>>>DataGrid. If you want to highlight the row beyond this, you can use the
>>>DataGrid.Select method.
>>>
>>>The
>>>following Knowledge Base article demonstrates a searchable DataGrid:
>>>
>>> Q308070 HOW TO: Implement a Searchable DataGrid by Using ADO.NET
>>>
>>>Here is a portion of the article that pertains to what you doing:
>>>
>>>This sample uses the CurrencyManager object to manipulate currency. You can
>>>also
>>>use the BindingManagerBase class, which is the base class for the
>>>CurrencyManager. All data binding is done through DataView classes. To
>>>synchronize your controls and the CurrencyManager, the controls must be
>>>bound to
>>>the same DataView.
>>>
>>> 'Search for the record in the DefaultView.
>>> 'If found, move the pointer to the correct record in the grid.
>>> Dim i As Integer
>>> i = dv.Find(txtFind.Text) ' Locates record in DefaultView.
>>> ' Does not move grid pointer or CM.
>>> If i > dv.Table.Rows.Count Or i < 0 Then
>>> MsgBox("Record Not found", MsgBoxStyle.Information, "Record Not
>>>Found")
>>> Else
>>> 'CM.Position = i ' Synchronizes Cm and Grid Pointer.
>>> End If
>>>
>>>
>>>
>>>>I am looking for a way to set the CurrencyManager.Position when I know the datarow.
>>>>
>>>>My specific problem: I have an array of child datarows, each with a specific rowid within the form's dataset. I want to set currencymanager.position to a selected child record - this updates my displayed values based on the databindings I've established for the form controls.
>>>>
>>>>The datarow object contains a member named rowid. Rowid holds an integer which corresponds to the value I want to set to currencymanager.position, however, the rowid member is private and can not be accessed programatically.
>>>>
>>>>Does anyone know any workaround for this problem? Any direction would be greatly appreciated!
Bonnie Berent DeWitt
NET/C# MVP since 2003

http://geek-goddess-bonnie.blogspot.com
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform