嵌入列表视图中的 asp.net 下拉列表不提供所选值来更新参数

发布于 2024-12-05 13:45:39 字数 1415 浏览 0 评论 0原文

我有一个带有列表视图的 asp.net 页面,该列表视图绑定到 SQLDataSource。嵌入到编辑和插入模板中,我有一个绑定到第二个 SQLDataSource 的 dropDownList。在更新参数中,我已经指定了相应的参数来使用 DropDownList 的选定值(至少我认为我有)。不幸的是,所选值没有进入更新。如果我尝试显式引用 dropdowlist 控件并尝试执行更新或插入,运行时会抱怨有太多参数传递给用于执行更新/插入的存储过程。代码片段如下。

编辑模板

<td class="GridContent">
<asp:DropDownList 
    ID="lstDataType" 
    runat="server" 
    DataSourceID="DataType" 
    DataTextField="Name" 
    DataValueField="Name" 
    CssClass="GridContent">
</asp:DropDownList>

控制参数(使用 ListView 控件 - 不提供所选值)

<asp:ControlParameter 
    ControlID="lstFields" 
    Name="DataType" 
    PropertyName="SelectedValue"
    Type="String" />

控制参数(使用 DropDownList 控件 - 更新抱怨参数太多)

<asp:ControlParameter 
    ControlID="lstTypeID" 
    Name="Name" 
    PropertyName="SelectedValue"
    Type="String" />

所以我想我的问题是如何获取更新的控制参数引用嵌入下拉列表的选定值。

更新

最后我花了一段时间才找到答案,但它非常简单;尽管在 ListView 控件树底部找到控件完全是一场噩梦。

我所做的是将隐藏标签控件添加到更新和插入模板中,并将其绑定到列表视图的 SQLDataSource。然后我在文章底部的 MSDN 站点上获取了一些示例代码中的 FindControlRecursive 函数:

http://msdn.microsoft.com/en-us/library/y81z8326.aspx

然后在我的页面的 Page_Load 方法中我添加了两个调用FindControlRecursive函数,一个获取标签,另一个获取下拉列表。 然后只需将 DropDownList.text 值分配给 Label.text 即可,一切都很顺利。

I have an asp.net page with a listview which is bound to an SQLDataSource. Embedded into the Edit and Insert templates I have a dropDownList which is bound to a second SQLDataSource. In the update parameters I have specified the corresponding parameter to use the Selected Value of the DropDownList (At least I think I have). Unfortunately the selected value is not making it through into the update. If I try to refer the the dropdowlist control explicitly and try to do the update or Insert, the runtime complains that there are too many parameters being passed to the stored procedure used to do the update/insert. Code snippets are below.

Edit Template

<td class="GridContent">
<asp:DropDownList 
    ID="lstDataType" 
    runat="server" 
    DataSourceID="DataType" 
    DataTextField="Name" 
    DataValueField="Name" 
    CssClass="GridContent">
</asp:DropDownList>

Control Parameter (Using the ListView control - Doesn't provide the selected value)

<asp:ControlParameter 
    ControlID="lstFields" 
    Name="DataType" 
    PropertyName="SelectedValue"
    Type="String" />

Control Parameter (using the DropDownList control - Update complains of too many parameters)

<asp:ControlParameter 
    ControlID="lstTypeID" 
    Name="Name" 
    PropertyName="SelectedValue"
    Type="String" />

So I suppose my question is how do I get the Control Parameter for the update to reference the selected value of the embedded dropdownlist.

UPDATE

In the end it took me a while to find the answer, but it is quite straight forward; although finding the controls at the bottom of the ListView control tree was a complete nightmare.

What I did was add a hidden label control into the update and insert templates and bound this to the SQLDataSource for the listview. Then I grabbed the FindControlRecursive function that's in some sample code on the MSDN site at the bottom of the article here:

http://msdn.microsoft.com/en-us/library/y81z8326.aspx

Then in the Page_Load method for my page I added two calls the the FindControlRecursive function, one to get the label and the other to get the dropdownlist.
Then simply assigned the DropDownList.text value to the Label.text and it all worked beautifully.

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

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

发布评论

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

评论(1

征﹌骨岁月お 2024-12-12 13:45:39

我一直在做另一个带有嵌入式下拉列表的列表视图,并做出了一个有趣的发现(我认为是这样)。似乎不需要后面的代码来将所选项目的文本分配给标签控件。所需要做的就是将隐藏标签和下拉菜单都绑定到数据源中的适当字段。

I've been doing another listview with an embedded dropdownlist and made an interesting discovery (Well I think so). It seems that it isn't necessary to have the code behind to assign the text for the selected item to the label control. All that is necessary is for the hidden label and the drop down to both be bound to the appropriate field in the DataSource.

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