Как я могу получить доступ к полям доступа из SqlDataSource в ListBox в DetailsView? - PullRequest
0 голосов
/ 26 июля 2011

У меня есть ListBox в DetailsView, каждый из которых имеет свой (Sql) источник данных:

<asp:DetailsView ID="dvwSomeDetailsView" DataSourceID="sdsSomeDetailsView" runat="server" ...
    ...
    <asp:TemplateField HeaderText="SomeHeaderText">
        <ItemTemplate>
            <asp:ListBox ID="lstSomeListBox" runat="server" DataSourceID="sdsSomeListBox" DataTextField="SomeColumn" DataValueField="SomeOtherColumn" Rows='<%#Eval("NumberOfRows") %>' />
        </ItemTemplate>
    </asp:TemplateField>
    ....
</asp:DetailsView>
....

Попытка получить доступ к столбцу «NumberOfRows» теперь, кажется, пытается прочитать его из SqlDataSource, который связан с DetailsView, как исключение: «DataBinding: System.Data.DataRowView не содержит свойство с именем NumberOfRows ».

Заполнение элементов ListBox тем, что возвращается из SqlDataSource для этого ListBox, не является проблемой, но как я могу получить доступ к данным из других столбцов (если это вообще возможно)? Просто ввод имени столбца, как в Rows = "NumberOfRows", конечно, не работает.

Обновление

Разъяснение того, что я на самом деле хотел бы сделать: я хочу, чтобы свойство ListBox "Rows" динамически устанавливалось на количество элементов, то есть, если имеется шесть элементов, то значение "Rows" должно быть равно шести, поэтому нет необходима прокрутка, и в списке нет свободного места.

Заранее спасибо.

G.

1 Ответ

0 голосов
/ 26 июля 2011

Не уверен, что это именно то, что вам нужно, но вы можете попробовать это:

// Get the ListBox - I used the first row for sake of illustration
ListBox lb = (ListBox)dvwSomeDetailsView.Rows[0].FindControl("lstSomeListBox");

// Now you can access the ListItemCollection of the ListBox
string value = lb.Items[0].Value;

Надеюсь, это, по крайней мере, поможет вам двигаться в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...