首先,我還在我的網絡開發者腿下。我已經梳理了一堆SO帖子,博客,新聞組和文章,我似乎無法解決我的問題。這與我看過的至少10個不同的帖子非常相似。ASP下拉列表不改變數值
我有一個ASP gridview,它充當一個顯示和一個選擇列。當你點擊select時,它會將數據引入detailsview。我有一個字段需要是一個下拉框,但每當我更改值並單擊更新時,發送到命令的值就是原始值。
頁標記:
<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() %>
回發各種組合,但我找不到合適的組合。
當我點擊選擇,我想要在下拉列表中選擇當前的計劃。當我選擇一個新的策劃者並點擊更新時,我希望策劃者進行更新。我不知道爲什麼這麼困難,或者我爲了讓它變得困難而大肆宣傳,但我正處在我的智慧結局之中。如果可能的話,我想解釋一下正在發生的事情,而不僅僅是使它工作的神奇的代碼行。
誇張是輕描淡寫。
EDITS:ViewStateEnbabled="true"
添加到下拉列表中,selectedIndexChanged
事件正在觸發。
再次編輯:將planner_id更改爲<asp:ControlParameter>
將添加的顯示器更改爲DetailsView1_OnDataBind
和MapDataSource1_updating
並且該值已遍佈全國。但我無法看到它被重置的位置。
你有沒有嘗試從下拉菜單中刪除'AutoPostBack'屬性?您也可以考慮擺脫SqlDataSource控件,並且僅在代碼隱藏中綁定數據。 – 2013-03-26 18:47:28
謝謝你的迴應。我確實這樣做了,但我仍然沒有任何運氣。我可以刪除'SqlDataSource',我更喜歡編寫這個自動數據對象的代碼,但這是一個原則問題,並且我自己的理解是讓它在這個時候使用這個方法。網站的其他部分相聚得很好,我比預定時間提前,所以我有一些時間來學習。 – Bmo 2013-03-27 11:22:01