如何从 DetailsView 中的 ListBox 中的 SqlDataSource 访问访问字段?

发布于 2024-11-26 00:10:01 字数 989 浏览 3 评论 0原文

我在 DetailsView 中有一个 ListBox,每个 ListBox 都有一个不同的 (Sql)DataSource:

<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”列现在似乎尝试从与 DetailsView 关联的 SqlDataSource 读取它,因为抛出异常:“数据绑定:System.Data.DataRowView 不包含名称为“NumberOfRows”的属性。

使用从该 ListBox 的 SqlDataSource 返回的内容填充 ListBox 的项目不是问题,但如何访问其他列的数据(如果可能的话)?仅输入 Rows="NumberOfRows" 中的列名称当然是行不通的。

更新

澄清我实际上想做的事情:我希望将ListBox的“Rows”属性动态设置为项目数,即如果有六个项目,“Rows”应该是设置为 6,这样就不需要滚动,并且列表框中没有空白空间。

提前致谢。

G。

I've got a ListBox within a DetailsView, each having a different (Sql)DataSource:

<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>
....

Trying to access the column "NumberOfRows" now seems to try and read it from the SqlDataSource that is associated with the DetailsView as an exception is thrown: "DataBinding: System.Data.DataRowView does not contain a property with the name NumberOfRows".

Filling the items of the ListBox with what is returned from the SqlDataSource for that ListBox is not a problem, but how can I access data from other columns (if at all possible)? Just entering the column name as in Rows="NumberOfRows" does of course not work.

Update

Clarification of what I would actually like to do: I want the "Rows" property of the ListBox to be set dynamically to the number of items, i.e. if there are six items, "Rows" should be set to six so no scrolling is neccessary and not empty space is in the listbox.

Thanks in advance.

G.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌能量女王 2024-12-03 00:10:01

不确定这是否完全是您想要的,但您可以尝试一下:

// 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;

希望这至少能让您朝着正确的方向前进。

Not sure if this is entirely what you want, but you can try this:

// 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;

Hopefully that will at least get you going in the right direction.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文