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

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

460  1 2 все
Murr_0002 знакомое лицо11.07.19 17:00
Murr_0002
NEW 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
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
NEW 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
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 
1 2 все