Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Сослаться на контрол?

460  1 2 все
Murr_0002 знакомое лицо11.07.19 17:00
Murr_0002
11.07.19 17:00 

Сослаться на контрол?


Есть пергруженный DropDownList:

using System;
using System.Web.UI.WebControls;

public class SiteDropDownList : DropDownList
{
public SiteDropDownList()
{
this.SelectedIndexChanged += GoSelectedIndexChanged;
}

private void GoSelectedIndexChanged(object sender, EventArgs e)
{
int bp = 0;
}

}

Да-да именно такой дурацкий - чтобы ничего не мешало.

Код, как есть, лежит в папочке App_Code.


Вопрос - Как на него сослаться?

Сунуть в дллку и сослаться на нее - <@ Register ... - умею.

Не понимаю в каком неймспаце лежит неврапированный этот контрол...

#1 
Murr_0002 знакомое лицо11.07.19 18:13
Murr_0002
11.07.19 18:13 
в ответ Murr_0002 11.07.19 17:00

Поймал интересный глюк:


ITable source;

public override object DataSource
{
get
{
if (source == null)
{
return base.DataSource;
}
return source;
}

set
{
source = value as ITable;
if (source == null)
{
base.DataSource = value;
}
base.DataSource = source.GetDataTable();
IDropDownListBindable bindable = value as IDropDownListBindable;
if (bindable != null)
{
this.DataTextField = bindable.DataTextField;
this.DataValueField = bindable.DataValueField;
}
}
}

Переопределил DataSource чтобы использовать агрегированную DataTable.

Т.е. если распознается что-то совместимое - дататабля извлекается и присваивается. Если нет - пользуем что дано.


Глюк - base.DataSource - отладчик все одно показывает оригинальный тип value.

Хотя присваивалась именно Дататабля... Виртуальность подводит?


#2 
Срыв покровов коренной житель11.07.19 19:56
11.07.19 19:56 
в ответ Murr_0002 11.07.19 17:00

Ты бы хоть для начала написал, о какой UI технологии речь?

#3 
AlexNek патриот11.07.19 21:42
AlexNek
NEW 11.07.19 21:42 
в ответ Murr_0002 11.07.19 17:00

нифига не понимаю что тебе нужно.


Сослаться на контрол

private void GoSelectedIndexChanged(object sender, EventArgs e

SiteDropDownList control = (SiteDropDownList)sender;

#4 
AlexNek патриот11.07.19 21:43
AlexNek
NEW 11.07.19 21:43 
в ответ Срыв покровов 11.07.19 19:56

Так Мурка только асп.нет употребляет.

#5 
Murr_0002 знакомое лицо12.07.19 09:48
Murr_0002
NEW 12.07.19 09:48 
в ответ Срыв покровов 11.07.19 19:56

о какой UI технологии речь?

------

using System.Web.UI.WebControls;

Или надо подробнее?

#6 
Murr_0002 знакомое лицо12.07.19 09:54
Murr_0002
NEW 12.07.19 09:54 
в ответ AlexNek 11.07.19 21:42

нифига не понимаю что тебе нужно

------

Аааа... да, забыл...

в aspx:

< % @ Register TagPrefix="CTRL" Namespace="R31.CTRL" Assembly="R31.CTRL" % >
< CTRL:SitesDropDownList ID="sites" runat="server" > < / CTRL:SitesDropDownList >


это для R31.CTRL.DLL.


Мне же надо сослаться на контрол определение которого лежит не в дллке, а в App_Code.

#7 
Murr_0002 знакомое лицо12.07.19 11:38
Murr_0002
12.07.19 11:38 
в ответ Murr_0002 12.07.19 09:54

Вот сижу и решаю тяжелую проблему... видимо - тяпница.


Дан код:


Dim r31BO As TR31BO = New TR31BO

If IsDate(Me.txtStartDate.Text) And
IsDate(Me.txtFinishDate.Text) Then

r31BO.Load(Me.txtStartDate.Text, Me.txtFinishDate.Text, Me.txtCustomerNo.Text, sites.Text)

Orders.DataSource = r31BO.Orders
Orders.DataBind()

End If

проблема - оставить как есть или перевести проперть Orders в статический метод TR31BO?


Т.е. сократить до уровня:


If IsDate(Me.txtStartDate.Text) And

IsDate(Me.txtFinishDate.Text) Then


Orders.DataSource = TR31BO.Orders(Me.txtStartDate.Text, Me.txtFinishDate.Text, Me.txtCustomerNo.Text, sites.Text)
Orders.DataBind()


End If

смущ

#8 
Murr_0002 знакомое лицо12.07.19 17:17
Murr_0002
NEW 12.07.19 17:17 
в ответ Murr_0002 12.07.19 11:38

Дописался, однако...


Severity Code Description Project File Line Suppression State

Error Cannot copy assembly 'R04.CTRL.dll' to file 'E:\SVN\\CG.Web\Chester\Bin\R04.CTRL.dll'. Unable to add 'E:\SVN\CG.Web\Reports\R4\R04.CTRL\obj\Debug\R04.CTRL.dll' to the Web site.

Unable to add file 'Bin\R04.CTRL.dll'.

The requested operation cannot be performed on a file with a user-mapped section open.


#9 
Murr патриот16.07.19 15:05
Murr
NEW 16.07.19 15:05 
в ответ Murr_0002 12.07.19 17:17

Блин, да что это такое!!!


Строится динамическая (переменное количество колонок) ДатаТабле.

Строится - нормально, без сбоев, все прописывается куда надо.

Дамп таблицы подтверждает - все финтифлюшки расставлены как надо.

Количество колонок - немного менее 40.


Теперь - та же таблица используется как ДатаСоурце для ДатаГридВиев.

Никаких специальных настроек не делается.

Никакой специфической работы с заголовками не делается.


Вопрос - Какого хрена отображаются только 8 колонок?


Точно так же собираемая таблица в другой странице делает все как надо... мрак...


#10 
Murr патриот16.07.19 15:37
Murr
16.07.19 15:37 
в ответ Murr 16.07.19 15:05

Блин, билли...


Так и поседеть можно...


Получилось так - на сайтик Я сослался корректно, а вот на его свойства, писаемые куда-то Студией, сослаться не сумел.

В разультате - на сайтике не обновлялись либы строящие табличку и там числилос 8 колонок.


Как при этом все рабоатло - не понимаю до сих пор... починил, но не понимаю...

#11 
Murr патриот16.07.19 17:18
Murr
NEW 16.07.19 17:18 
в ответ Murr 16.07.19 15:37

Снова задница...


Во всех Дынь-Дзи-Бавах прописано:

- вызов неназначенного делегата - безопасен...

И только у меня Студия подсвечивает код проверки серым (как избыточный) и кидает исключение на вызове...


Нее, пора в отпуск...

#12 
Murr патриот16.07.19 17:29
Murr
NEW 16.07.19 17:29 
в ответ Murr 16.07.19 17:18

А вообще - смешно:

Имею Код:


switch (e.Row.Cells.Count)
{
case 15:
e.Row.Cells[13].BackColor = Color.Gainsboro;
e.Row.Cells[14].BackColor = Color.Gainsboro;
e.Row.Cells[15].BackColor = Color.Gainsboro;
break;

case 20:
e.Row.Cells[13].BackColor = Color.Gainsboro;
e.Row.Cells[14].BackColor = Color.Gainsboro;
e.Row.Cells[15].BackColor = Color.Gainsboro;

e.Row.Cells[16].BackColor = Color.Gainsboro;
e.Row.Cells[17].BackColor = Color.Gainsboro;
break;

case 25:
e.Row.Cells[13].BackColor = Color.Gainsboro;
e.Row.Cells[14].BackColor = Color.Gainsboro;
e.Row.Cells[15].BackColor = Color.Gainsboro;

e.Row.Cells[16].BackColor = Color.Gainsboro;
e.Row.Cells[17].BackColor = Color.Gainsboro;

e.Row.Cells[23].BackColor = Color.Gainsboro;
e.Row.Cells[24].BackColor = Color.Gainsboro;
e.Row.Cells[25].BackColor = Color.Gainsboro;
break;

case 30:
e.Row.Cells[13].BackColor = Color.Gainsboro;
e.Row.Cells[14].BackColor = Color.Gainsboro;
e.Row.Cells[15].BackColor = Color.Gainsboro;

e.Row.Cells[16].BackColor = Color.Gainsboro;
e.Row.Cells[17].BackColor = Color.Gainsboro;

e.Row.Cells[23].BackColor = Color.Gainsboro;
e.Row.Cells[24].BackColor = Color.Gainsboro;
e.Row.Cells[25].BackColor = Color.Gainsboro;

e.Row.Cells[26].BackColor = Color.Gainsboro;
e.Row.Cells[27].BackColor = Color.Gainsboro;
break;
}




Он должен установить расцветку... но ГДЕ?

В Гриде колонки начиная в 8-й - динамические... добавляются группами по 5 штук, исключая последнюю - там 3.

Понять что мужик хотел подкрасить - не могу.

Спрашиваю шефа - кто работает с данным репортом... - такая-то... - Где ее найти? - она в отпуске... - Что делать с раскраской? - А никто не знает - он тогда что-то сделал, но никому не сказал что именно и как раскрашивается... пока оставь...

Пипец полный, обыкновенный...


Ладно - написал коллектор названий валют и проксю для доступа к нужным целлам - работает.

Остальное - будем смотрерть когда получится...

#13 
AlexNek патриот16.07.19 21:15
AlexNek
NEW 16.07.19 21:15 
в ответ Murr 16.07.19 17:29
Он должен установить расцветку... но ГДЕ?

Возьми экзель и поставть прички в нужные ячейки, может что то прояснится. Хода да, бред сумасшедшего.

#14 
Murr патриот17.07.19 09:50
Murr
NEW 17.07.19 09:50 
в ответ AlexNek 16.07.19 21:15

Возьми экзель и поставть прички в нужные ячейки

------

А причем тут Ексел? Это System.Web.UI.WebControls.GridView.


И что значит - проставь? - там табличка - ДИНАМИЧЕСКАЯ - количество столбцов определяется ДАННЫМИ. смущ

#15 
Murr патриот17.07.19 11:57
Murr
NEW 17.07.19 11:57 
в ответ Murr 17.07.19 09:50

Перемесил Я этот свитч и получилось:


foreach (KeyValuePair<string, int> kvp in currencyIndex)
{
String currency = kvp.Key;

row[currency].Energy.BackColor = Color.Gainsboro;
row[currency].EnergyRate.BackColor = Color.Gainsboro;
row[currency].ExchageRate.BackColor = Color.Gainsboro;
row[currency].Net.BackColor = Color.Gainsboro;
row[currency].Total.BackColor = Color.Gainsboro;
}



С этим хоть как-то работать можно...

#16 
Murr патриот17.07.19 12:33
Murr
NEW 17.07.19 12:33 
в ответ Murr 17.07.19 11:57

Похоже, что мне пора следовать за предшественником...


Тестовый сайт на 2 страницы. Страницы - практически одинаковые.

код 1


Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
Try
If IsDate(Me.txtStartDate.Text) And
IsDate(Me.txtFinishDate.Text) Then

r31BO.Load(Me.txtStartDate.Text, Me.txtFinishDate.Text, Me.txtCustomerNo.Text, sites.Text)

Orders.DataSource = r31BO.Orders
Orders.DataBind()

ViewState.Add("Orders", r31BO.Orders)

End If
Catch ex As Exception
ExceptionHandler.TExceptionHandler.Warning(ex)
End Try

End Sub

Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
Try
If ViewState("Orders") IsNot Nothing Then
Dim itable As ITable = ViewState("Orders")
Excel.Export("ordersByInvoiceDate.xls", itable.GetDataTable())
End If
Catch ex As Exception

End Try
End Sub


код 2:



Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
If IsDate(Me.txtStartDate.Text) And
IsDate(Me.txtFinishDate.Text) Then

r04bo.Load(Me.txtStartDate.Text, Me.txtFinishDate.Text)


SitesSummary.DataSource = r04bo.Sites
SitesSummary.DataBind()

Invoices.DataSource = r04bo.Invoices
Invoices.DataBind()

ViewState.Add("Invoices", r04bo.Invoices)

End If
End Sub

Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
Try
Try
If ViewState("Invoices") IsNot Nothing Then
Dim itable As ITable = ViewState("Invoices")
Excel.Export("OversizeSurchargeItems.xls", itable.GetDataTable())
End If
Catch ex As Exception

End Try
Catch ex As Exception

End Try
End Sub



Организация r31BO.Orders и r04bo.Invoices

- однотипная - класс оболочка и внутри класс Табле (ну или типы: TOrders.Table & TInvoices.Table)


Ну и почему первый код рабоатет без проблем, а второй - ломается на сериализации?

Еще раз - код - однотипный - общий базовый класс и немного логики общета данных. Сериализации ни там, ни там нет... на одном сайте...

Бред? Не-а... клиника...

#17 
Murr патриот17.07.19 12:36
Murr
NEW 17.07.19 12:36 
в ответ Murr 17.07.19 12:33

Нее, точно - пора в дурку - пропустил сериализацию...хммм

#18 
AlexNek патриот17.07.19 22:04
AlexNek
NEW 17.07.19 22:04 
в ответ Murr 17.07.19 09:50, Последний раз изменено 17.07.19 22:06 (AlexNek)
А причем тут Ексел?

Вам разобраться или шашечки спок

#19 
Murr патриот18.07.19 10:05
Murr
NEW 18.07.19 10:05 
в ответ AlexNek 17.07.19 22:04

Вам разобраться или шашечки

------

Честно говоря - мне - пофиг...

Добил до рабочего состояния 4-й и сел за 8-й... их там еще много...

#20 
Murr патриот22.07.19 11:45
Murr
NEW 22.07.19 11:45 
в ответ Murr 18.07.19 10:05

Уууу...


Как надоело месить говнокод... а еще только утро понедельника...


Где-то писал, что были непонятки с индексами...

Наконец - осознал что это было...


Короче мужик сделал следующее:

- из данных в базе, построчно, слепил поля для таблички.

- в процессе лепки - сократил длинные названия. Процедура редуцирования выполнена в одном месте.

- поскольку названия сокращены, то сделать какой-либо джойн не получается

Так этот мудень вместо решения проблемы джойна задвинул ее в угол и писал циклы с целочисленными индексами для доступа к полям...


Первую часть Я вроде как решил - есть список полей и индексация полями...

Вот только в другой табличке нефига нет редуцирования - опять все валится на попытке получить доступ полю которого нет... надо либо делать редуцирование во второй табаличке, либо просыпаться и обдумывать проблему головой, а не пальцами... спок


#21 
AlexNek патриот22.07.19 22:21
AlexNek
NEW 22.07.19 22:21 
в ответ Murr 22.07.19 11:45
Как надоело месить говнокод.

быстро что то тебе надоело смущ

Смотри не свали раньше времени. хаха

#22 
Murr патриот23.07.19 09:55
Murr
NEW 23.07.19 09:55 
в ответ AlexNek 22.07.19 22:21

Смотри не свали раньше времени.

------

В отпуск уже недели две как пора...

#23 
Murr патриот23.07.19 11:49
Murr
NEW 23.07.19 11:49 
в ответ Murr 23.07.19 09:55

Ну вот следующая лажа...

Результирующая картинка на экране:

- грид, несколько ключей, далее по тем добавленным колонкам значения в процентах...

- вторая грида, в ней уже сгруппированные по меньшему количеству ключей значения... и тоже - в процентах...


Два дня былтыхался в клоаке кода НЕ ПОНИМАЯ как он это дело пересчитывает... где-то 15 минут на проход...

Сегодня наконец дошло что было в тех формулах которые Я посчитал ненужными - там проценты конвертились обратно в количество, чтобы просуммироваться и снова конвертнуться в проценты... Ну чего - модец - у него оно даже как-то работало...

Ну теперь надо похерить все сложности - оставить в табличке именно данные, а отрисовку процентовки скинуть в гриду...


Пыхх...

#24 
AlexNek патриот23.07.19 22:09
AlexNek
NEW 23.07.19 22:09 
в ответ Murr 23.07.19 11:49
НЕ ПОНИМАЯ как он это дело пересчитывает... где-то 15 минут на проход.

Если дело во времени, то понимать ничего вообще вначале не нужно. Достаточно запустить профайлер, а вот когда он место найдет, туда и долбить


#25 
Murr патриот24.07.19 10:19
Murr
NEW 24.07.19 10:19 
в ответ AlexNek 23.07.19 22:09

Если дело во времени, то понимать ничего вообще вначале не нужно.

-----

Дело не во времени.

Я до сих пор не знаю где и что лежит в базе.

Весь анализ - из имеющегося кода.

Ну а там замудренные расчеты: метры=>листы=>проценты=>листы=>метры=>проценты...

Текущая проблема - неоткуда взять количество обработанных/небработанных листов...

есть либо полное количество, либо частичное... при этом "полное" не является полным,

а "частичное" считается по количеству отчетов об процессе...

и нихрена не понятно откуда можно вытащить нужные цифирьки или как пересчитать имеющиеся...

#26 
Murr патриот24.07.19 12:48
Murr
NEW 24.07.19 12:48 
в ответ Murr 24.07.19 10:19

Блин, так и не могу сослаться на контрол в App_Code.

Все время какие-то бяки мешают...


В Дллке или в теле сайта - без проблем. А в App_Code - никак...

#27 
AlexNek патриот24.07.19 20:46
AlexNek
NEW 24.07.19 20:46 
в ответ Murr 24.07.19 10:19
Я до сих пор не знаю где и что лежит в базе.

А у тебя сколько размер памяти?

С такими то данными немудренно, в оставшееся время точно уже не успеешь так что не переживай.glass

#28 
Murr патриот24.07.19 23:39
Murr
NEW 24.07.19 23:39 
в ответ AlexNek 24.07.19 20:46

А у тебя сколько размер памяти?

-------

6-8 на чужем, под 100 на своем...

#29 
AlexNek патриот25.07.19 21:52
AlexNek
NEW 25.07.19 21:52 
в ответ Murr 24.07.19 23:39

маловато будет, все порастратил уже спок

#30 
Murr патриот30.07.19 16:44
Murr
NEW 30.07.19 16:44 
в ответ AlexNek 25.07.19 21:52

все порастратил уже

------

Не-е, не все - еще остается на порождение глюков...


Сегодняшяя глюка.

Две аспх-формы в каждой есть DropDownList.

Один - без проблем отрисовывает мой источник.

Другой - рисует непонятно что... иногда вообще название типа.


Что не смотрю - вроде все должно быть одинаково.

Но во втором случае отображается не текст из поля, а строка вида - "ИмяПоля='Содержимое поля'"

Уж довел контрол до трех строк - все ОДИНАКОВО!!! Должно работать... но - нет...


Только сейчас покопал источник данных - там аккурат засада была - добовлял то что надо, но не туда куда надо...

т.е. вместо Add(row);

было написано dt.Rows.Add(row);

Ну, соответственно, row конвертилась в строку перед присвоением полю...

Почти два часа поисков...


\Теперь надо как-то обойти таймаут - не успевает на локальной машине под отладчиком загрузится страница...


#31 
1 2 все