Сослаться на контрол?
Сослаться на контрол?
Есть пергруженный 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 ... - умею.
Не понимаю в каком неймспаце лежит неврапированный этот контрол...
Поймал интересный глюк:
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.
Хотя присваивалась именно Дататабля... Виртуальность подводит?
нифига не понимаю что тебе нужно
------
Аааа... да, забыл...
в aspx:
< % @ Register TagPrefix="CTRL" Namespace="R31.CTRL" Assembly="R31.CTRL" % >
< CTRL:SitesDropDownList ID="sites" runat="server" > < / CTRL:SitesDropDownList >
это для R31.CTRL.DLL.
Мне же надо сослаться на контрол определение которого лежит не в дллке, а в App_Code.
Вот сижу и решаю тяжелую проблему... видимо - тяпница.
Дан код:
Dim r31BO As TR31BO = New TR31BOIf IsDate(Me.txtStartDate.Text) AndIsDate(Me.txtFinishDate.Text) Thenr31BO.Load(Me.txtStartDate.Text, Me.txtFinishDate.Text, Me.txtCustomerNo.Text, sites.Text)Orders.DataSource = r31BO.OrdersOrders.DataBind()End If
проблема - оставить как есть или перевести проперть Orders в статический метод TR31BO?
Т.е. сократить до уровня:
If IsDate(Me.txtStartDate.Text) AndIsDate(Me.txtFinishDate.Text) Then
Orders.DataSource = TR31BO.Orders(Me.txtStartDate.Text, Me.txtFinishDate.Text, Me.txtCustomerNo.Text, sites.Text)Orders.DataBind()
End If
Дописался, однако...
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.
Блин, да что это такое!!!
Строится динамическая (переменное количество колонок) ДатаТабле.
Строится - нормально, без сбоев, все прописывается куда надо.
Дамп таблицы подтверждает - все финтифлюшки расставлены как надо.
Количество колонок - немного менее 40.
Теперь - та же таблица используется как ДатаСоурце для ДатаГридВиев.
Никаких специальных настроек не делается.
Никакой специфической работы с заголовками не делается.
Вопрос - Какого хрена отображаются только 8 колонок?
Точно так же собираемая таблица в другой странице делает все как надо... мрак...
Блин, билли...
Так и поседеть можно...
Получилось так - на сайтик Я сослался корректно, а вот на его свойства, писаемые куда-то Студией, сослаться не сумел.
В разультате - на сайтике не обновлялись либы строящие табличку и там числилос 8 колонок.
Как при этом все рабоатло - не понимаю до сих пор... починил, но не понимаю...
А вообще - смешно:
Имею Код:
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.
Понять что мужик хотел подкрасить - не могу.
Спрашиваю шефа - кто работает с данным репортом... - такая-то... - Где ее найти? - она в отпуске... - Что делать с раскраской? - А никто не знает - он тогда что-то сделал, но никому не сказал что именно и как раскрашивается... пока оставь...
Пипец полный, обыкновенный...
Ладно - написал коллектор названий валют и проксю для доступа к нужным целлам - работает.
Остальное - будем смотрерть когда получится...
Перемесил Я этот свитч и получилось:
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;}
С этим хоть как-то работать можно...
Похоже, что мне пора следовать за предшественником...
Тестовый сайт на 2 страницы. Страницы - практически одинаковые.
код 1
Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.ClickTryIf IsDate(Me.txtStartDate.Text) AndIsDate(Me.txtFinishDate.Text) Thenr31BO.Load(Me.txtStartDate.Text, Me.txtFinishDate.Text, Me.txtCustomerNo.Text, sites.Text)Orders.DataSource = r31BO.OrdersOrders.DataBind()ViewState.Add("Orders", r31BO.Orders)End IfCatch ex As ExceptionExceptionHandler.TExceptionHandler.Warning(ex)End TryEnd SubProtected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.ClickTryIf ViewState("Orders") IsNot Nothing ThenDim itable As ITable = ViewState("Orders")Excel.Export("ordersByInvoiceDate.xls", itable.GetDataTable())End IfCatch ex As ExceptionEnd TryEnd Sub
код 2:
Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.ClickIf IsDate(Me.txtStartDate.Text) AndIsDate(Me.txtFinishDate.Text) Thenr04bo.Load(Me.txtStartDate.Text, Me.txtFinishDate.Text)
SitesSummary.DataSource = r04bo.SitesSitesSummary.DataBind()Invoices.DataSource = r04bo.InvoicesInvoices.DataBind()ViewState.Add("Invoices", r04bo.Invoices)End IfEnd SubProtected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.ClickTryTryIf ViewState("Invoices") IsNot Nothing ThenDim itable As ITable = ViewState("Invoices")Excel.Export("OversizeSurchargeItems.xls", itable.GetDataTable())End IfCatch ex As ExceptionEnd TryCatch ex As ExceptionEnd TryEnd Sub
Организация r31BO.Orders и r04bo.Invoices
- однотипная - класс оболочка и внутри класс Табле (ну или типы: TOrders.Table & TInvoices.Table)
Ну и почему первый код рабоатет без проблем, а второй - ломается на сериализации?
Еще раз - код - однотипный - общий базовый класс и немного логики общета данных. Сериализации ни там, ни там нет... на одном сайте...
Бред? Не-а... клиника...