Member 12618369 Ответов: 1

Как передать значение в выпадающий список из sqldatasource


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

Что я уже пробовал:

<asp:SqlDataSource ID="SqlDataSource8" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"



SelectCommand="SELECT [MId], [MName] FROM [ModuleRelation] WHERE [UId]=@uid">
<SelectParameters>

<asp:Parameter Name="uid" Type="string"/>
</SelectParameters>

1 Ответов

Рейтинг:
12

Vincent Maverick Durano

Я на самом деле не поклонник SqlDataSource, но если вы пытаетесь извлечь значение из своего SqlDataSource, чтобы использовать его для заполнения выпадающего списка, то вы можете попробовать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e)
{

    DataView dvSql = (DataView)SqlDataSource8.Select(DataSourceSelectArguments.Empty);
    foreach (DataRowView drvSql in dvSql)
    {
        string moduleName = drvSql["MName"].ToString();
        DropDownList1.Items.Clear();
        DropDownList1.Items.Add(moduleName);
    }
}


Member 12618369

Спасибо за это, но я не смог найти DataView в библиотеке c# - это DataSourceView?

Richard Deeming

Убедитесь, что у вас есть using System.Data; строка в верхней части файла кода.

Vincent Maverick Durano

Спасибо тебе за это, Ричард.

Member 12618369

Спасибо Ричард
Я получил ошибку с SqlDataSource8 Красный под строкой говорит, что инициализатор afield не может ссылаться на нестатическое поле, метод или свойство

Richard Deeming

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

Member 12618369

Нет я использую его но у меня есть красный под линией

Richard Deeming

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

Похоже, вы попытались опубликовать хотя бы часть кода непосредственно в классе, а не в теле метода внутри класса. В коде Винсента этот метод называется Page_Load.

Member 12618369

Да Большое спасибо я разобрался с последней ошибкой но теперь когда я запускаю программу я получаю ссылку на объект не заданную на экземпляр объекта
в этой строке foreach (DataRowView drvSql в dvSql)

Richard Deeming

Вероятно, потому, что вы не предоставили значения для @uid параметр, а источник данных по умолчанию отменяет запрос select, если какой-либо параметр null.

Вам нужно будет откуда-то получить идентификатор пользователя и добавить следующую строку перед вызовом Select:
SqlDataSource8.SelectParameters["@uid"].DefaultValue = theUserId;

Member 12618369

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

Richard Deeming

Если вы просто ищете имя пользователя, то это User.Identity.Name.

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