powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Итоги в DataGrid
7 сообщений из 7, страница 1 из 1
Итоги в DataGrid
    #33623364
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь в Footer загнать итоги по двум полям DataGrid. Но не получается, пишет:
Код: plaintext
Exception Details: System.InvalidCastException: Specified cast is not valid.
по строке:
Код: plaintext
rowData = (DataRowView)(e.Item.DataItem);
Код следующий:
Код: 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.
		private void DistributionGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
		{
			DataRowView rowData = null;
			Double price;
			System.Web.UI.WebControls.Literal necessaryLabel = null;
			System.Web.UI.WebControls.Literal separableLabel = null;
			System.Web.UI.WebControls.Literal totalLabel = null;
			switch (e.Item.ItemType)
			{
				case ListItemType.AlternatingItem:
				case ListItemType.EditItem:
				case ListItemType.Item:
				case ListItemType.SelectedItem:
					rowData = (DataRowView)(e.Item.DataItem);
					price = (Double)(rowData["amount_necessary"]);
					NecessaryTotal += price;
					necessaryLabel = (System.Web.UI.WebControls.Literal)
						(e.Item.FindControl("lblNecessary"));
					necessaryLabel.Text = price.ToString("C2");
					price = (Double)(rowData["amount_necessary"]);
					SeparableTotal += price;
					separableLabel = (System.Web.UI.WebControls.Literal)
						(e.Item.FindControl("lblSeparable"));
					separableLabel.Text = price.ToString("C2");
					break;
				case ListItemType.Footer:
					totalLabel = (System.Web.UI.WebControls.Literal)
						(e.Item.FindControl("lblNecessaryTotal"));
					totalLabel.Text = NecessaryTotal.ToString("C2");
					totalLabel = (System.Web.UI.WebControls.Literal)
						(e.Item.FindControl("lblSeparableTotal"));
					totalLabel.Text = SeparableTotal.ToString("C2");
					break;
				default:
					break;
			}
		}
Поможите?
...
Рейтинг: 0 / 0
Итоги в DataGrid
    #33623890
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня вот так работает, правда на васике
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 Private Sub dgAnkets_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgAnkets.ItemDataBound

        Select Case e.Item.ItemType
            Case ListItemType.Item, ListItemType.AlternatingItem
                If e.Item.Cells( 1 ).Text = mdtAnkets.Compute("Max([S])", "") Then
                    e.Item.BackColor = System.Drawing.Color.Blue
                    e.Item.ForeColor = System.Drawing.Color.White
                End If
            Case ListItemType.Footer
                e.Item.Cells( 0 ).Text = "<b>Итого</b>"
                e.Item.Cells( 1 ).Text = "<b>" & mdtAnkets.Compute("SUM([S])", "") & "</b>"
                e.Item.CssClass = "GRIDHEADERROW"
                e.Item.Cells( 1 ).Attributes.Add("align", "center")
        End Select
    End Sub
...
Рейтинг: 0 / 0
Итоги в DataGrid
    #33625986
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да у автора нормальный скрипт
проблема в конвертации, скорее всего в дабл.
посмотрите отладчиком, что возвращает rowData.
на всякий http://www.sql.ru/forum/actualthread.aspx?tid=79506&hl=globalization+parse


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Итоги в DataGrid
    #33628227
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profil
проблема в конвертации, скорее всего в дабл.
посмотрите отладчиком, что возвращает rowData.

до конвертации дело не доходит. Все заканчивается присвоением rowData соответствующего значения объекта.

Проблема исчезает, если DataGrid заполнять через DataSet. У меня же во всей проге заполнение идет через SqlDataReader c помощью StoredProcedure.

Пока не знаю, как в моих многочисленных DataGrid зделать итоговые значения по числовым полям. Может, кто поможет?
...
Рейтинг: 0 / 0
Итоги в DataGrid
    #33629175
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не придумал лучшего, как поступить "топорно" и это сработало:
Код: 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.
		private void DistributionGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
		{
			System.Web.UI.WebControls.Literal totalLabel = null;
			switch (e.Item.ItemType)
			{
				case ListItemType.Footer:

					System.Data.SqlClient.SqlCommand SelectAmountTotalCommand;
					SelectAmountTotalCommand = new System.Data.SqlClient.SqlCommand();
					SelectAmountTotalCommand.CommandText = "[SelectAmountTotal]";
					SelectAmountTotalCommand.CommandType = System.Data.CommandType.StoredProcedure;
					SelectAmountTotalCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@id", System.Data.SqlDbType.Int));
					SelectAmountTotalCommand.Parameters["@id"].Value = ID;
					SelectAmountTotalCommand.Connection  = DataBase.Connection;
					SelectAmountTotalCommand.Connection.Open();
					SqlDataReader reader = SelectAmountTotalCommand.ExecuteReader();
					while (reader.Read())
					{
						NecessaryTotal += reader.GetDouble( 2 );
						SeparableTotal += reader.GetDouble( 4 );
					}
					reader.Close();
					SelectAmountTotalCommand.Connection.Close();
					
					totalLabel = (System.Web.UI.WebControls.Literal)
						(e.Item.FindControl("lblNecessaryTotal"));
					totalLabel.Text = NecessaryTotal.ToString("N");
					totalLabel = (System.Web.UI.WebControls.Literal)
						(e.Item.FindControl("lblSeparableTotal"));
					totalLabel.Text = SeparableTotal.ToString("N");
					break;
				default:
					break;
			}
		}
...
Рейтинг: 0 / 0
Итоги в DataGrid
    #33629385
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxy, все же лучше оставить первый вариант :)
совершенно не удивительно, что на строке rowData = (DataRowView)(e.Item.DataItem); у вас выскакивает ошибка.
у Вас же источником является IDataReader, а для него DataItem соответствует типу System.Data.Common.DbDataRecord

+ /topic/218694#1897757


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Итоги в DataGrid
    #33636278
Maxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profil
Maxy, все же лучше оставить первый вариант :)
совершенно не удивительно, что на строке rowData = (DataRowView)(e.Item.DataItem); у вас выскакивает ошибка.
у Вас же источником является IDataReader, а для него DataItem соответствует типу System.Data.Common.DbDataRecord

+ /topic/218694#1897757


Posted via ActualForum NNTP Server 1.3
Спасибо, теперь заработал мой первый вариант!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Итоги в DataGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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