2013-03-19 2 views
1

У меня есть 2 gridviews, gv1 и gv2 и ObjectDataSource с идентификатором ods1. Оба gridviews указывают на DataSourceID="ods1".Как получить имя вызывающего Gridview в объекте ObjectDataSource Выбор события

Мой вопрос в том, как узнать, как выбрать событие ObjectDataSource, которое gridview вызвало ods1. Я хочу установить входные параметры, исходя из которых gridview сделал вызов ods1.

+0

Можете ли вы разместить свой код? что ты пробовал ..? –

ответ

-1

Чтобы получить имя GridView, который позвонить в ObjectDataSource

Вы можете сделать что-то вроде:

string CallingGridName = ((ObjectDataSourceID)sender).ID; 
+1

Неправильное использование. Во-первых, вы не можете использовать переменную 'sender' для чего-то, что не является реальным типом, вам нужно передать его в ObjectDataSource. Во-вторых, даже если вы это сделали, ваш код по-прежнему получает идентификатор объекта ObjectDataSource, а OP запрашивает идентификатор «GridView». – jadarnel27

+0

(в вашей защите, вот как я впервые прочитал вопрос, так что это легко сделать) – jadarnel27

0

Я думаю, что это не так легко возможно, и он чувствует, как это было бы против идеи позади первый экзамен на степень бакалавра

Вы можете делегировать два ObjectDataSource s для получения данных из СЕМЬИГО класса репозитория, но все же вам понадобятся два разных источника данных, если вы хотите иметь два разных набора параметров. Таким образом, вы не дублируете код, так как код репозитория разделяется между экземплярами источника данных объекта.

0

Предупреждение: Hack впереди

Я склонен согласиться с Wiktor Zychla's answer, но если вы действительно нужно сделать это ...

Единственное, что я могу думать, чтобы сделать это было бы справиться событие «DataBinding» каждого из ваших GridView s и установите переменную сеанса, чтобы указать, какой из них собирается вызвать событие «Выбор» ObjectDataSource.

Таким образом, вы имели бы ваши GridView методы:

protected void gv1_DataBinding(object sender, EventArgs e) 
{ 
    Session["currentGridID"] = "gv1"; 
} 

и

protected void gv2_DataBinding(object sender, EventArgs e) 
{ 
    Session["currentGridID"] = "gv2"; 
} 

И тогда, ваш ObjectDataSource может проверить эту переменную сеанса, чтобы увидеть, какой идентификатор в нем в то время как ObjectDataSource стреляет на этот раз:

protected void ods1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) 
{ 
    if(Session["currentGridID"] == "gv1") 
    { 

    } 
    else 
    { 

    } 
} 
Смежные вопросы