ASP下拉列表不更改值

时间:2013-03-26 18:42:15

标签: c# asp.net

首先,我仍然在我的网络开发之下。我已经梳理了大量的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_OnDataBindMapDataSource1_updating,并且值已到处。但我看不出它被重置的地方。

2 个答案:

答案 0 :(得分:0)

您是否EnableViewState="false"@Control设置了@Page?如果未启用viewstate,则控件将始终将默认值作为所选值。这可以在aspx级别或ascx级别设置。

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

答案 1 :(得分:0)

所以我是一个完全白痴,DetailsView DataKeyNames属性设置不正确。我不小心将“planner_id”添加为向导中的一个键。

代码一直很好。谢谢大家的尝试,但我是一个迷失的原因!

相关问题