ASP.NET SqlDataSource устанавливает SessionParameter программно - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть StoredProcedure с именем "usp_posts_getall", и у него есть 1 параметр с именем "@thisCategoryID"

в моем "thisCategoryID" любые значения, кроме 0 (ноль), будут возвращать все записи в моей таблице сообщений.

Теперь у меня есть пункты меню категории, и каждый раз, когда я выбираю, я устанавливаю значение в своем имени сеанса под названием «SelectedCID».

Итак, как мне ... Создать SessionParameter программно в SqlDataSource?


UPDATE:
Хорошо. Я получил это работает сейчас.

1 Ответ

1 голос
/ 07 сентября 2010

Если это параметр сеанса, который используется SqlDataSource, тогда вы можете установить значение в сеансе, например, в Page_Load():

Session["thisCategoryID"] = theCategoryId;

(я неправильно понял вопрос?)

Хорошо, обновление:

Я думаю, что вы можете создать обработчик события SqlDataSource.OnSelecting. В этом обработчике вы можете получить доступ к коллекции Parameters источника данных и добавить к нему другой параметр. В настоящее время я не могу проверить следующий код, поэтому он может быть не совсем корректным, но я надеюсь, что вы видите идею:

SqlDataSource1_OnSelecting(SqlDataSourceSelectingEventArgs args)
{
  var param = new Parameter("@thisCatagoryID");
  param.DefaultValue = Session["SelectedCID"]; 
  SqlDataSource1.SelectParameters.Add(param);  
}

В качестве альтернативы, вы можете декларативно установить параметр в разметке, например:

<asp:SqlDataSource ...>
  <SelectParameters>
    <asp:SessionParameter Name="thisCategoryID" SessionField="SelectedCID"
      DefaultValue="0" />
    ...
  </SelectParameters>
</asp:SqlDataSource>
...