繁体   English   中英

在插入新条目时使用 GridView 中的 DropDownList 的值

[英]Using the value of a DropDownList in a GridView on inserting a new entry

我现在搜索了几天,但没有找到解决方案。 所以这是我的场景:

我有一个带有 DataBindung 的 DetailView 到数据库和 DefaultMode 设置为“插入”作为新数据库条目的输入表单。 此 DetailsView 中的一个字段是具有包含 DropDownList 的 InsertItemTemplate 的 TemplateField。 此 DropDownList 还绑定到另一个 SqlDataSource,使用选择参数“UserID”为实际登录用户获取数据库的所有行。 这些行显示在我的 DropDownList 中,在我的浏览器中查看源代码时,我看到了正确的“选项”-属性,所有这些漂亮的 db-ID 都在其相应的值中。 所以到目前为止一切都很好。

现在我按下我的插入按钮将我的数据发送回服务器。 但是,当尝试使用以下代码从我的 DropDownList 中的 DetailsView1_ItemInserting() 中获取选定的值时,我得到了一个空值。

var list = (DropDownList)DetailsView1.Rows[0].FindControl( "DropDownList1" );
InsertEntryDataSource.InsertParameters["DropDownList1Value"].DefaultValue = list.Items[list.SelectedIndex].Value;

相同的代码适用于我在这个项目中创建的另一个表单。 唯一的区别是,另一个 DropDownList 绑定到一个数据源,没有我必须在运行时设置的选择参数(当前登录的用户 ID)。

我的结论是,回发后 DropDownList 为空,因为数据绑定尚未完成。 所以我在 DetailsView1_ItemInserting() 中为我的 DropDownList 绑定到的 SqlDataSource 设置了选择参数 - 现在上面的行得到了我的值。

但是:我刚刚又测试了一次表单,我确定,无论我在 DropDownList 中选择哪个条目,我总是得到第一个条目的值! 整个过程似乎清除了 DropDownList 的 SelectedIndex - 所以现在我有一个值要插入而不是 null,但它是错误的。 :-(

所以我的问题是:如何在 DetailsView1_ItemInserting() 中访问我的 DropDownList 的选定值以将其保存到数据库中?

提前致谢, Anheledir

您可以使用此语法访问 ddl,而无需编写代码:

<InsertParameters>
<asp:ControlParameter ControlID="DetailsView1$DropDownList1" Name="DropDownList1" PropertyName="SelectedValue" Type="String" />
</InsertParameters>

或者从 DataSource_Inserting 事件而不是 DetailsView_ItemInserting 事件你可以这样做:

  e.InputParameters["InputParameterFieldName"] = ((DropDownList)DetailsView1.FindControl("DropDownList1")).SelectedValue;

祝你好运!

您是否曾经一次插入不止一行数据? 我想备份一个步骤并询问为什么您需要将插入作为 GridView 本身的一部分而不是它自己的 UI 部分(带有一些输入控件和提交按钮)。 空间的分离强调功能的分离——一部分用于插入,一部分用于报告/展示。 您使用的方法听起来像是为了获得很少的回报而进行的大量斗争。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM