powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему отображается всегда первая позиция?
9 сообщений из 9, страница 1 из 1
Почему отображается всегда первая позиция?
    #32761540
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Может кто знает, почему не срабатывает это?
Dim crm As CurrencyManager = Me.BindingContext(Me.RepositoryItemLookUpEdit2.DataSource)
Dim row As DataRowView = CType(crm.Current, System.Data.DataRowView)
Debug.WriteLine(row(0).ToString)
При выборе любого члена списка в любом случае отображается код первого члена, почему так?
Хотя в самом списке отображается нужная позиция.
Спасибо!
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32761855
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположу что не тот BindingContext берете

Менять надо здесь:
Код: plaintext
1.
.... Me.BindingContext(Me.RepositoryItemLookUpEdit2.DataSource) 
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32762605
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бесполезно
Я уже явно сделал:
Dim crm As CurrencyManager = Me.BindingContext(Me.Ds1, "vw_Sotrudniki")
Dim row As DataRowView = CType(crm.Current, System.Data.DataRowView)
Debug.WriteLine(row(0).ToString)
Всеравно отображается первый из списка.
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32763043
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот стопроцентно работающая функция, только BindingContext берётся от грида.

Код: plaintext
1.
2.
3.
4.
Public Shared Function GetRowColumn(ByVal frm As Form, ByVal  grd As DataGrid, ByVal strNameCol As String) As Object
        Dim cm As CurrencyManager = CType(frm.BindingContext(grd.DataSource, grd.DataMember), CurrencyManager)
        Dim row As DataRowView = CType(cm.Current, DataRowView)
        GetRowColumn = (row.Row(strNameCol))
    End Function

frm - форма
grd - грид
strNameCol - название колонки таблицы
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32763070
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том то и дело, что в таблице у меня все прекрасно работает. А вот в списке ниструя.
А нужно просто определить код выделенной записи.
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32763143
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин, не понял, может туп. Список - это listbox ?
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32788127
narval
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня та же проблема, test1 пишет всегда "A" а test2 реальную текущую позицию.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
    Dim DS As New DataSet
    Dim tbl As New DataTable

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim clmn As DataColumn
        Dim Row As DataRow
        '========================================================
        clmn = New DataColumn
        clmn.DataType = System.Type.GetType("System.Int32")
        clmn.ColumnName = "IdRow"
        tbl.Columns.Add(clmn)

        clmn = New DataColumn
        clmn.DataType = System.Type.GetType("System.String")
        clmn.ColumnName = "Text"
        tbl.Columns.Add(clmn)
        '========================================================
        Row = tbl.NewRow
        Row("IdRow") =  1 
        Row("Text") = "A"
        tbl.Rows.Add(Row)

        Row = tbl.NewRow
        Row("IdRow") =  2 
        Row("Text") = "B"
        tbl.Rows.Add(Row)

        Row = tbl.NewRow
        Row("IdRow") =  3 
        Row("Text") = "C"
        tbl.Rows.Add(Row)
        '========================================================
        tbl.TableName = "tbl"
        DS.Tables.Add(tbl)
        '========================================================

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.BindingContext(DS, "tbl").Position = (Me.BindingContext(DS, "tbl").Position +  1 )

        Dim RowText As String
        Dim row As DataRowView

        row = CType(CType(Me.BindingContext(DS.Tables("tbl")), CurrencyManager).Current, DataRowView)
        RowText = CStr(row("Text"))
        Console.WriteLine("Test 1: " & RowText)

        row = CType(Me.BindingContext(DS, "tbl").Current, DataRowView)
        RowText = CStr(row("Text"))
        Console.WriteLine("Test 2: " & RowText)

    End Sub

Может кто сказать чем отличется
Код: plaintext
1.
CType(CType(Me.BindingContext(DS.Tables("tbl")), CurrencyManager).Current, DataRowView)

от

Код: plaintext
1.
CType(Me.BindingContext(DS, "tbl").Current, DataRowView)
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32788140
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эти два контекста РАЗНЫЕ

BindingContext(DS, "tbl")

BindingContext(DS.Tables("tbl"))

у одного DataSource - это dataset, а у второго - datatable. ...test1 пишет всегда "A" а test2 реальную текущую позицию...и оба пишут ПРАВИЛЬНУЮ ДЛЯ СЕБЯ позицию.

теперь дело за малым определить - какой контекст установлен для DataGrid :)

НИ ОДИН ИЗ ПОТЕРПЕВШИХ не указал, какой контекст он использует для установки.

внимательно посмотрите на пример sposad - он очень грамотно выбирает контекст - именно тот, который нужен и который используется для показа в datagrid'e:

frm.BindingContext( grd .DataSource, grd .DataMember)

и именно поэтому у него "стопроцентно работающая функция" © sposad
...
Рейтинг: 0 / 0
Почему отображается всегда первая позиция?
    #32788144
narval
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял, спасибо. Казалось что BindingContext(DS, "tbl") и BindingContext(DS.Tables("tbl")) одно и то же.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему отображается всегда первая позиция?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]