首先,我仍然在我的网络开发之下。我已经梳理了大量的SO帖子,博客,新闻组和文章,我似乎无法解决我的问题。它与我看过的至少10个不同的帖子非常相似。
我有一个ASP网格视图,它充当显示和选择列。单击“选择”时,会将数据抛出到详细信息视图中。我有一个字段需要是一个下拉框,但每当我更改值并单击更新时,发送到命令的值就是原始值。
页面加价:
<asp:TemplateField HeaderText="Planner Name">
<ItemTemplate>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="cboCurrentPlanner" runat="server" DataSourceID="plannerDataSource"
DataTextField="planner_name" DataValueField="planner_id" SelectedValue='<%# Eval("planner_id") %>' AutoPostBack="true" ></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Fields>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
</asp:DetailsView>
的SqlDataSource:
SelectCommand="SELECT vendor_key, vendor, planner_name, street, city, state_country, planner_id, country FROM V_MAP_MarkerInfo WHERE (vendor_key = @vendor_key)"
UpdateCommand="MAP_usp_webUpdatePlanToVendor"
UpdateCommandType="StoredProcedure" onupdating="mapDetailSource_Updating" >
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="vendor_key"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="vendor_key" Type="String" />
<asp:Parameter Name="planner_id" Type="Int32" />
<asp:Parameter Name = "vendor" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="plannerDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:vendor_mapConnectionString %>"
SelectCommand="SELECT [planner_id], [planner_name] FROM [MAP_planners]"
OldValuesParameterFormatString="original_{0}">
</asp:SqlDataSource>
我不会发布存储过程代码,我知道这是有效的。原始值是使其成为参数的唯一值。
我尝试了<%# Bind/Eval() %>
回发的各种组合,但找不到合适的组合。
当我单击选择时,我希望在下拉列表中选择当前的计划器。当我选择一个新的计划器并单击更新时,我希望计划器能够更新。我不确定为什么这么困难,或者我为了让它变得困难而被王室搞砸了,但我最终在我的智慧结束。如果可能的话,我想要解释正在发生的事情,而不仅仅是让它起作用的神奇的代码行。
Flabbergasted是轻描淡写。
编辑:ViewStateEnbabled="true"
已添加到下拉列表中,selectedIndexChanged
事件正在触发。
再次编辑:将planner_id更改为<asp:ControlParameter>
添加的监视器到DetailsView1_OnDataBind
和MapDataSource1_updating
,并且值已到处。但我看不出它被重置的地方。
答案 0 :(得分:0)
您是否EnableViewState="false"
或@Control
设置了@Page
?如果未启用viewstate,则控件将始终将默认值作为所选值。这可以在aspx级别或ascx级别设置。
答案 1 :(得分:0)
所以我是一个完全白痴,DetailsView DataKeyNames
属性设置不正确。我不小心将“planner_id”添加为向导中的一个键。
代码一直很好。谢谢大家的尝试,但我是一个迷失的原因!