Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как получить значение поля ID если его не отображать ? / 4 сообщений из 4, страница 1 из 1
10.01.2009, 13:42
    #35749719
pionersurg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить значение поля ID если его не отображать ?
При получении данных отбражаем в DataGridView1 примерно так:

using (cn = new SqlConnection(Form1.ConnectionString))
{
try
{
cn.Open();
DataSet ds = new DataSet();
string zapros = "select field1, field2, fieldID from table1";
SqlCommand select_command = new SqlCommand(zapros, cn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = select_command;
da.Fill(ds);
DataGridView1.DataSource = ds.Tables[0];
}
catch (SqlException ex) { MessageBox.Show(ex.Message.ToString()); }
}

В дальнейшем необходимо получить значение поля fieldID, чтобы использовать в sql запросе. Сейчас получаю значение так:
Convert.ToInt16(DataGridView1.CurrentRow.Cells["fieldID"].Value)
Но хотелось бы его не отображать fieldID. Как тогда можно будет на него сослаться.
Поделитесь примером ?
...
Рейтинг: 0 / 0
11.01.2009, 11:43
    #35750553
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить значение поля ID если его не отображать ?
pionersurgПри получении данных отбражаем в DataGridView1 примерно так:

using (cn = new SqlConnection(Form1.ConnectionString))
{
try
{
cn.Open();
DataSet ds = new DataSet();
string zapros = "select field1, field2, fieldID from table1";
SqlCommand select_command = new SqlCommand(zapros, cn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = select_command;
da.Fill(ds);
DataGridView1.DataSource = ds.Tables[0];
}
catch (SqlException ex) { MessageBox.Show(ex.Message.ToString()); }
}

В дальнейшем необходимо получить значение поля fieldID, чтобы использовать в sql запросе. Сейчас получаю значение так:
Convert.ToInt16(DataGridView1.CurrentRow.Cells["fieldID"].Value)
Но хотелось бы его не отображать fieldID. Как тогда можно будет на него сослаться.
Поделитесь примером ?

Юзать BindingSource.
...
Рейтинг: 0 / 0
12.01.2009, 15:19
    #35752816
pionersurg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить значение поля ID если его не отображать ?
using (cn = new SqlConnection(Form1.ConnectionString))
{
try
{
cn.Open();
DataSet ds = new DataSet();
string zapros = "select field1, field2, fieldID from table1";
SqlCommand select_command = new SqlCommand(zapros, cn);

SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = select_command;
da.Fill(ds);

//создание временного DataSet
DataSet dsTemp = new DataSet();
dsTemp.Tables.Add();
foreach (DataRow row in ds.Tables[0].Rows)
{
dsTemp.Tables[0].Rows.Add();
}
foreach (DataColumn column in ds.Tables[0].Columns)
{
if (column.ColumnName != "fieldID")
{
dsTemp.Tables[0].Columns.Add(column.ColumnName, column.DataType);
}
}
//заполнение временного DataSet данными
foreach (DataColumn column in ds.Tables[0].Columns)
{
if (column.ColumnName != "fieldID")
{
for (int r = 0; r < ds.Tables[0].Rows.Count; r++)
{
dsTemp.Tables[0].Rows[r][column.ColumnName] = ds.Tables[0].Rows[r][column.ColumnName];
}
}
}

BindingSource bs = new BindingSource();
bs.DataSource = dsTemp;
bs.DataMember = dsTemp.Tables[0].TableName;
DataGridView1.DataSource = bs;
}
catch (SqlException ex) { MessageBox.Show(ex.Message.ToString()); }
}

//значение поля fieldID текущей строки получаем так
ds.Tables[0].Rows[bs.Position]["fieldID"]

оно ?
...
Рейтинг: 0 / 0
12.01.2009, 23:22
    #35753721
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как получить значение поля ID если его не отображать ?
pionersurg
Код: 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.
using (cn = new SqlConnection(Form1.ConnectionString))
    {
        try
        {
            cn.Open();
            DataSet ds = new DataSet();
            string zapros = "select field1, field2, fieldID from table1";
            SqlCommand select_command = new SqlCommand(zapros, cn);

            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = select_command;
            da.Fill(ds);

//создание временного DataSet
            DataSet dsTemp = new DataSet();
            dsTemp.Tables.Add();
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                 dsTemp.Tables[0].Rows.Add();
            }
            foreach (DataColumn column in ds.Tables[0].Columns)
            {
                 if (column.ColumnName != "fieldID") 
                 { 
                 dsTemp.Tables[0].Columns.Add(column.ColumnName, column.DataType);
                 }
            }
//заполнение временного DataSet данными
foreach (DataColumn column in ds.Tables[0].Columns)
{
    if (column.ColumnName != "fieldID")
    {
        for (int r = 0; r < ds.Tables[0].Rows.Count; r++)
        {
            dsTemp.Tables[0].Rows[r][column.ColumnName] = ds.Tables[0].Rows[r][column.ColumnName];
        }
    }
}

            BindingSource bs = new BindingSource();
            bs.DataSource = dsTemp; 
            bs.DataMember = dsTemp.Tables[0].TableName;
            DataGridView1.DataSource = bs;
        }
        catch (SqlException ex) { MessageBox.Show(ex.Message.ToString()); }
    }

//значение поля fieldID текущей строки получаем так
ds.Tables[0].Rows[bs.Position]["fieldID"]

оно ?

Ничего не понял.. Зачем временные датасеты?
У BindingSource есть свойство Current, там и берите нужное значение поля. Все хорошо описано в MSDN.

PS. Как мне оформить свое сообщение?
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как получить значение поля ID если его не отображать ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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